master資料庫已投入生產一段時間後,做主從複製的操作記錄 環境: master庫:172.18.237.13slave庫:172.18.237.14 mysql版本說明: master:mysql 5.6.33 slave:mysql 5.6.35 我到公司的時候已經裝了5.6.33版本,找了很 ...
master資料庫已投入生產一段時間後,做主從複製的操作記錄
環境:
master庫:172.18.237.13
slave庫:172.18.237.14
mysql版本說明:
master:mysql 5.6.33
slave:mysql 5.6.35
我到公司的時候已經裝了5.6.33版本,找了很久沒有找到5.6.33版本的包,勉強找到了5.6.35版本的包,只能硬頭皮用著(最終主從搭建成功,暫時未發現其他異常)
1、確保master、slave伺服器時間同步
yum -y install ntp
ntpdate time.pool.aliyun.com #最好使用crontab做為任務定時時間同步
systemctl start ntpd
systemctl enable ntpd
2、master資料庫授權slave伺服器主從同步帳號
grant replication slave on *.* to tb@'172.18.237.14' identified by '123456';
3、鎖定master庫
FLUSH TABLES WITH READ LOCK;
#解鎖命令:UNLOCK TABLES;
4、備份master資料庫至all.sql,排除資料庫系統庫(Database|performance_schema|information_schema|mysql|test)
mysql -e "show databases;" -uroot -p| grep -Ev "Database|performance_schema|information_schema|mysql|test" | xargs mysqldump -uroot -p --databases > all.sql
5、將all.sql備份文件scp至slave伺服器
scp all.sql [email protected]:/root/
6、進入slave伺服器將mysql的data目錄中的文件進行備份(內容僅僅是初裝的系統庫等文件)
cp /data/mysql56 /data/mysql56.bak
7、再用all.sql還原到slave資料庫中
mysql -uroot -p <all.sql
8、提前將bin-log日誌存放目錄創建並將其改用戶、用戶組改為mysql,my.cnf配置將加入日誌存放路徑
cd /usr/local/mysql/data/
mkdir binglogs
chown -R mysql:mysql binglogs
9、修改master庫my.cnf文件開啟主從配置以及bin-log,加入如下配置參數:
#開啟主從和binlog日誌記錄
server-id = 52
log-bin = mysql-bin
#binlog日誌定期清理,單位天。
expire_logs_days = 5
#binlog日誌保存路徑和文件名,可根據實際目錄進行改寫
log-bin = /usr/local/mysql/data/binlogs/mysql-bin
#使用混合模式複製
binlog_format = mixed
#binlog每個日誌文件大小
max_binlog_size = 100M
#binlog緩存大小
binlog_cache_size = 4M
#最大binlog緩存大小
max_binlog_cache_size = 512M
10、重啟master資料庫,使其主從配置生效,此時資料庫會從之前的加鎖狀態自動解鎖。
service mysqld restart
/usr/local/mysql/data/binlogs/下已經存在bin-log日誌表示成功開啟bin-log日誌記錄
11、進入master資料庫,查看master狀態,查看bin-log文件名以及position點
show master status;
如:
File | Position
mysql-bin.000001 | 1692
12、由於資料庫重啟會自動解鎖,又是生產資料庫,此時通常有資料庫寫入或更新,position點
也會持續變化,所以此時查看到的position點不是最初的,應找到bin-log日誌文件查看最初的position點作為slave同步初始點。
這裡通過mysqlbinlog工具將不可直接讀取的bin-log日誌轉換為可讀格式在進行查看。
mysqlbinlog mysql-bin.000001 >abc.txt
head -n10 abc.txt
查看結果如下:(找到第一個position點作為slave同步初始點end_log_pos 120)
#181121 21:27:14 server id 52 end_log_pos 120 CRC32 0xcc4e91f2 Start: binlog v 4, server v 5.6.33-log created 181121 21:27:14 at startup
13、進入slave伺服器,修改slave庫my.cnf配置文件,開啟主從模式
#不能與master的值一致
server-id = 203
#從資料庫通常要求只讀(可以限定普通用戶進行數據修改的操作,但不會限定具有super許可權的用戶(如超級管理員root用戶)的數據修改操作。)
read_only=1
#還可以添加其他參數...
14、重啟slave,使其主從配置生效
service mysqld restart
15、連接slave資料庫,配置master的相關參數並啟動slave(position點用上面第12步查到的點)
change master to master_host='172.18.237.13',master_user='tb',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
16、查看主從連接狀態
show slave status\G;
如下所示表示主從創建成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes