本篇文章給大家介紹的是關于在mysql服務器之間設置主從復制,下面我們來看具體內容。
設置細節:
主服務器:192.168.1.10?
從服務器:192.168.1.20?
數據庫:mydb
1.設置mysql主服務器
在主服務器上創建一個具有REPLICATION SLAVE權限的mysql帳戶,復制客戶端將連接到master。
mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?TO?'repl_user'@'192.168.1.20'?IDENTIFIED?BY?'secretpassword'; mysql>?FLUSH?PRIVILEGES;
在所有表上都有block write語句,因此不要在備份后進行更改。
mysql>?use?mydb; mysql>?FLUSH?TABLES?WITH?READ?LOCK; mysql>?exit;
編輯mysql配置文件并在[mysqld]部分下添加以下代碼。
#?vim?/etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1
重新啟動master mysql服務器以使更改生效。
#?service?mysqld?restart
使用以下命令檢查當前二進制日志文件名(File)和當前偏移量(Position)值。
mysql?>?SHOW?MASTER?STATUS; +------------------+----------+--------------+------------------+ |?File?????????????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?| +------------------+----------+--------------+------------------+ |?mysql-bin.000002?|??????107?|?mydb?????????|??????????????????| +------------------+----------+--------------+------------------+
以上輸出顯示當前二進制文件使用的是mysql-bin.000002,偏移值為107。記下這些值以在從屬服務器上使用。
備份數據庫并將其復制到slave mysql server。
#?mysqldump?-u?root?-p?mydb?>?mydb.sql #?scp?mydb.sql?192.168.1.20:/opt/
完成備份后,從表中刪除READ LOCK,以便進行更改。
mysql>?UNLOCK?TABLES;
2.設置MySQL Slave Server
編輯salve mysql配置文件并在[mysqld]部分下添加以下值。
#?vim?/etc/my.cnf
[mysqld] server-id=2 replicate-do-db=mydb
server-id始終為非零數值。這些值永遠不會與其他主服務器和從服務器相似。
重啟mysql slave server,如果你已經配置了復制,請在啟動時使用-skip-slave-start,不要立即連接到主服務器。
#?/etc/init.d/mysqld?restart
使用以下命令在從屬服務器上設置選項值。
mysql>??CHANGE?MASTER?TO?MASTER_HOST='192.168.1.10', ????->?MASTER_USER='repl_user', ????->?MASTER_PASSWORD='secretpassword', ????->?MASTER_LOG_FILE='mysql-bin.000002', ????->?MASTER_LOG_POS=107;
最后啟動從屬線程
mysql>?SLAVE?START;
檢查從服務器的狀態。
mysql>?show?slave?status?G
***************************?1.?row?*************************** ???????????????Slave_IO_State: ??????????????????Master_Host:?192.168.1.15 ??????????????????Master_User:?repl_user ??????????????????Master_Port:?3306 ????????????????Connect_Retry:?60 ??????????????Master_Log_File:?mysql-bin.000002 ??????????Read_Master_Log_Pos:?107 ???????????????Relay_Log_File:?mysqld-relay-bin.000001 ????????????????Relay_Log_Pos:?4 ????????Relay_Master_Log_File:?mysql-bin.000002 ?????????????Slave_IO_Running:?No ????????????Slave_SQL_Running:?No ??????????????Replicate_Do_DB:?mydb ??????????Replicate_Ignore_DB: ???????????Replicate_Do_Table: ???????Replicate_Ignore_Table: ??????Replicate_Wild_Do_Table: ??Replicate_Wild_Ignore_Table: ???????????????????Last_Errno:?0 ???????????????????Last_Error: ?????????????????Skip_Counter:?0 ??????????Exec_Master_Log_Pos:?107 ??????????????Relay_Log_Space:?107 ??????????????Until_Condition:?None ???????????????Until_Log_File: ????????????????Until_Log_Pos:?0 ???????????Master_SSL_Allowed:?No ???????????Master_SSL_CA_File: ???????????Master_SSL_CA_Path: ??????????????Master_SSL_Cert: ????????????Master_SSL_Cipher: ???????????????Master_SSL_Key: ????????Seconds_Behind_Master:?NULL Master_SSL_Verify_Server_Cert:?No ????????????????Last_IO_Errno:?0 ????????????????Last_IO_Error: ???????????????Last_SQL_Errno:?0 ???????????????Last_SQL_Error: ??Replicate_Ignore_Server_Ids: ?????????????Master_Server_Id:?1 1?row?in?set?(0.00?sec) mysql>
MySQL主從復制已在你的系統和工作模式下成功配置。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END