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
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。