server_id = 1 #惟一標識,主庫從庫不能重複 log_bin = mysql-bin #開啓日誌 binlog_format=MIXED #日誌記錄的格式 max_binlog_size = 512M #單個日誌文件最大 expire_logs_day = 7 #日誌有效期(天) binlog_do_db = test1,test2 #日誌記錄那些數據庫 binlog_ignore_db = mysql,performance_schema,information_schema #日誌記錄忽略那些數據庫
MySQL服務重啓:mysql
systemctl restart mysqld.service
2)、建立用於同步帳戶sql
mysql> CREATE USER 'user'@'10.20.1.18' IDENTIFIED BY 'passwd'; #建立用戶 mysql> GRANT REPLICATION SLAVE ON *.* TO 'rsync_user'@'10.20.1.1%' identified by 'passwd'; #分配權限 mysql>flush privileges;
3)、查看master狀態
show master status命令記錄二進制文件名(mysql-bin.000009)和position位置(1354)。
其中「Binlog_Do_DB 」字段顯示記錄日誌要同步的庫,「Binlog_Ignore_DB」字段顯示忽略記錄日誌,無需同步的庫。
4)、查看master的logbin開啓狀態數據庫
show variables like 'log_bin';
從服務器操做
1)、修改從數據庫服務器配置文件my.cnf安全
server-id=2 #惟一標識,與主庫不同 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin #打開slave的relaylog功能的
MySQL服務重啓:服務器
systemctl restart mysqld.service
2)、設置同步信息
先中止同步架構
mysql>stop slave;
設置同步信息併發
CHANGE MASTER TO MASTER_HOST='10.20.1.18', MASTER_USER='rsync_user', MASTER_PASSWORD='passwd', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=754;
其中master_log_file 和 master_log_pos爲上面主庫show master status命令記錄的信息。
3)、啓動slave 同步進程異步
mysql>start slave;
4)、slave狀態查看
show slave status\G 命令查看,主要查看這幾項:ide
Slave_IO_Running: Yes Slave_SQL_Running: Yes Master_Log_File: mysql-bin.000009 Relay_Master_Log_File: mysql-bin.000009 Read_Master_Log_Pos: 1654 Exec_master_log_pos: 1654
只有【Slave_IO_Running】和【Slave_SQL_Running】都是Yes,則同步正常。
No或者Connecting都不行,可查看mysql-error.log,以排查問題。性能
show variables like 'log_error%';
5)、同步測試
驗證操做,如在master的新建一test數據庫,新建一張表中插入一條數據,在slave的test庫的相同數據表中查看是否有新增的數據,便可驗證主從複製功能是否有效,還能夠關閉slave(mysql>stop slave;),而後再修改master,看slave是否也相應修改(中止slave後,master的修改不會同步到slave),就可完成MySQL主從複製功能的驗證了。
主庫插入數據:
從庫查看:
驗證主從數據同步成功。