天天看點

資料庫主從同步binlog posscp /root/all.sql [email protected]:/rootskip_slave_startservice mysqld restartmysql -u root -ppassword < /root/all.sql

這篇介紹基于日志的主從同步,适用于低版本的資料庫同步。

一、主庫

my.cnf,在[mysqld]下面加入:

server-id = 1

log-bin =mysql-bin

binlog_format = mixed

log=/data/mysql/data/mysql.log

max_connections = 100

max_connect_errors = 10

expire_logs_days = 99

開通用于binlog 複制的使用者

CREATE USER 'repl'@ '%' IDENTIFIED BY 'repl_password';

GRANT REPLICATION SLAVE ON . TO 'repl'@'%' IDENTIFIED BY 'repl_password';

鎖表防寫入

FLUSH TABLES WITH READ LOCK;

獲得基礎備份

mysqldump -uroot -ppassword --all-databases  --lock-tables=false > /root/all.sql

mysqldump -uroot -ppassword --single-transaction --master-data=2 --all-databases | gzip >all.sql.gz //備份資料庫

使用scp指令傳輸資料庫檔案all.sql到從伺服器

scp /root/all.sql [email protected]:/root

gzip -cd all.sql.gz | /usr/local/mysql/bin/mysql -u root -ppassword

//還原資料庫

再次連接配接資料庫進入mysql指令行檢視master狀态

mysql>SHOW MASTER STATUS;

得到binlog 檔案和binlog pos

mysql-bin.000009 107

解鎖資料表

mysql>UNLOCK TABLES;

二、從庫

log-bin=mysql-bin #不是必須

binlog_format=mixed #跟随log-bin,不是必須

server-id=2

log_slave_updates

skip_slave_start

character_set_server = utf8

service mysqld restart

導入主伺服器的資料庫

mysql -u root -ppassword < /root/all.sql

登入mysql伺服器,執行以下指令

CHANGE MASTER TO MASTER_HOST='x.x.x.x',MASTER_USER='repl',MASTER_PASSWORD='repl_password',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS =107;

開啟從庫複制

start slave
show slave status G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

\如果此2項都為yes,master-slave配置即成功