mysql 5.7 主從同步配置(windows)
今天在做mysql的主從同步的時候碰到了一些問題,在這裡整理一下。
首先趁著五一假期,主庫停機,複製data至從庫(時間比較長)。
1、配置主庫,主要是my.ini增加如下選項:
# Binary Logging.
# log-bin
log-bin="D:/mysql/mysql/log/mysql-bin/"
# 使binlog在每N次binlog寫入後與硬碟 同步
sync-binlog=1
# 1天時間自動清理二進位制日誌
expire_logs_days=1
# 需要同步的資料庫
binlog-do-db=database1
binlog-do-db=database2
binlog-do -db=database3
# 不需要同步的資料庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=database5
binlog-ignore-db=database6
# Error Logging.
log-error="data.err"
# Server Id,每個庫都必須獨立的分配id.
server-id=2
port=6666
從庫配置:
replicate_wild_do_table =database1.%
replicate_wild_do_table=database2.%
replicate_wild_do_table=database3.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=database5.%
replicate_wild_ignore_table=database6.%
# 二進位制日誌自動刪除的天數
expire_logs_days=1
# Server Id.
server-id=5
port=6667
配置檔案的選項如上,其餘則須通過命令列的形式來進行…,(抱怨:oracle就是讓mysql越來越難用)
接下來時命令列的內容:
主庫:
#進入到mysql的bin目錄下,執行
#重啟主資料庫,然後在主資料庫中建立一個備份賬戶
mysql -h localhost -u root -p
輸入密碼
進入mysql
mysql>show databases;
mysql>grant replication slave on *.* to 'slave_username'@'192.168.1.12' identified by 'slave_password' ;
mysql>flush privileges;
#顯示主伺服器的狀態資訊,並且找到File 和 Position 的值記錄下來;
mysql>show master status \G;
#記下File 和 Position,從庫配置要用
從庫:
#進入到mysql的bin目錄下,執行
#重啟從資料庫,設定登入主資料庫的賬號和密碼等資訊,然後啟動slave
mysql>change master to master_host='192.168.1.2',master_user='slave_username',master_password='slave_password', master_log_file='.000001',master_log_pos=0;
mysql>start slave;
#此處加\G的意思是格式化輸出,否則輸出亂七八糟,看不清楚
mysql>show slave status \G;
#如果出現: Slave_IO_Running: Yes Slave_SQL_Running: Yes以上兩項都為Yes,那說明沒問題了
問題彙總:
1.問題:unknown variable ‘master-host=192.168.8.1’
解決辦法:Mysql版本從5.1.7以後開始就不支援“master-host”類似的引數,需要在mysql控制檯中使用change master to 命令新增相關資訊,而且中橫槓’-‘改成了下橫槓’_’…
2.問題:mysqlbinlog: [ERROR] unknown option ‘–no-beep’
解決辦法:命令後新增 –no-defualts選項
3.問題:Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解決辦法:因為copy的時候講auto.cnf一起copy過來了,就產生了主庫和從庫UUID重複的問題,刪掉auto.cnf,重新啟動
4.問題:Got fatal error 1236 from master when reading data from binary log: ‘binlog truncated in the middle of event; consider out of disk space on master; the first event ” at 120, the last event read from ‘D:\mysql\mysql\log\mysql-bin.000001’ at 123, the last byte read from ‘xxx.000001’ at 139.’, Error_code: 1236
解決辦法:在從庫重新指向到主庫下一個可用的binlog file 並且從binlog file初始化的位置開始,執行mysql命令
#此命令一定不要加檔案路徑,直接寫檔名,否則繼續報錯
mysql> stop slave;
mysql> change master to master_log_file='.000001',master_log_pos=0;
mysql> start slave;
mysql> show slave status;
5.問題:cann’t connect to mysql server 10060,遠端無法訪問
解決辦法:給使用者授權遠端登入許可權
mysql> grant all privileges on . to ‘username’@’%’ identified by ‘password’ with grant option;
6.問題: The innodb_system data file ‘ibdata1’ must be writable
解決辦法:賦予ibdata1寫入許可權