1. 程式人生 > >mysql 5.7 主從同步配置(windows)

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寫入許可權