my.cnf
# 主機ID,不可以重複,範圍 0~4294967295 server-id = 1 # Log 的名稱或路徑,只有名稱會將檔案放在 datadir 下 log_bin = mysql-bin # Log 的格式{ROW,STATEMENT,MIXED},最低支援版本 5.1.8 binlog_format = MIXED # 需要同步的資料庫,多個寫多行 binlog_do_db = test binlog_do_db = mydb # 針對 InnoDB 且有用 transaction 的設定 innodb_flush_log_at_trx_commit=1 sync_binlog=1
進入Master mysql
mysql -u root -p
建立同步連接帳號 db_sync,密碼12345,給 slave_host,
mysql> GRANT REPLICATION SLAVE ON *.* TO 'db_sync'
'slave_host' IDENTIFIED BY '12345';
鎖定資料庫寫入
mysql> FLUSH TABLES WITH READ LOCK;
取得 MASTER 上的 Log File 名稱與 Position 編號,這個編號代表當前的 Log 戳記
mysql> SHOW MASTER STATUS\G;
File: | mysql-bin.000010 |
---|---|
Position: | 106 |
Binlog_Do_DB: | test,mydb |
Binlog_Ignore_DB: |
離開 mysql
mysql> quit
匯出 MASTER 上的資料
mysqldump -uroot -p --flush-logs --opt --master-data test > test.sql
解除鎖定
mysql -u root -p -e UNLOCK TABLES;
Slave上的設定
my.cnf
# 主機ID,不可以重複,範圍 0~4294967295 server-id = 2 # 需要同步的資料庫,或指定的資料表 replicate_wild_do_table = test.% replicate_wild_do_table = mydb.category replicate_wild_do_table = mydb.blog # 與 Master 斷線後,重新嘗試連接的時間(sec) master-connect-retry = 60
匯入資料
mysql -uroot -p test < test.sql
進入 Slave mysql
mysql -uroot -p
停止跟清除之前的 SLAVE 連接
mysql> STOP SLAVE; RESET SLAVE;
設定Slave 與 Master 的連接
mysql> CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='db_sync', MASTER_PASSWORD='12345', MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=106;
啟動 SLAVE 的連接
mysql> START SLAVE;
察看連接狀態
mysql> SHOW SLAVE STATUS\G;
Slave_IO_State: | Connecting to master |
Master_Host: | master_host |
Master_User: | db_sync |
Master_Port: | 3306 |
Connect_Retry: | 60 |
Master_Log_File: | mysql-bin.000011 |
Read_Master_Log_Pos: | 106 |
Relay_Log_File: | master_host-relay-bin.000011 |
Relay_Log_Pos: | 4 |
Relay_Master_Log_File: | mysql-bin.000011 |
Slave_IO_Running: | Yes |
---|---|
Slave_SQL_Running: | Yes |
Replicate_Do_DB: | |
Replicate_Ignore_DB: | |
Replicate_Do_Table: | |
Replicate_Ignore_Table: | |
Replicate_Wild_Do_Table: | test.%,mydb.category,mydb.blog |
Replicate_Wild_Ignore_Table: | |
Last_Errno: | 0 |
Last_Error: | |
Skip_Counter: | 0 |
Exec_Master_Log_Pos: | 106 |
Relay_Log_Space: | 106 |
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: | 0 |
接著到 Master 上新增一筆資料測試看看吧!
參考文章:
MYSQL 主从服务器配置
mysql主从同步快速设置
MySQL 設定 Replication (Master – Slave)
多主一从mysql replication同步表的大胆尝试
MySQL复制的数据库过滤若干问题
MYSQL5.1复制参数binlog_format
0 回應:
張貼留言