1. 程式人生 > >MySQL 遷移並搭建主從(實踐)

MySQL 遷移並搭建主從(實踐)

第一階段

一、資料的初始化

1、老主庫

關閉sql_log_bin
set sql_log_bin = off;


建立匯出使用者
grant all privileges on *.* to 'dump'@'10.50.31.37' identified by 'rooT_258';
grant all privileges on *.* to 'dump'@'10.1.21.47' identified by 'rooT_258';
grant all privileges on *.* to 'dump'@'172.20.30.16' identified by 'rooT_258';
grant all privileges on *.* to 'dump'@'10.50.30.32' identified by 'rooT_258';


2、新庫

建立備份的路徑
cd /
mkdir backup
cd backup
mkdir backup20180817


在新庫所在伺服器上執行備份老庫的操作
mydumper -h 172.17.0.3 --regex="aa.*" -u root -p 'abc123' -r 300000 -G -E -R -v 3 -t 5 -o /data/backup20181018 > /data/mydumper20181018.log 2>&1 &
引數說明:
-u --user 備份所使用的使用者
-x, --regex 是同正則表示式匹配 'db.table'
-r, --rows 將表按行分塊時,指定的塊行數,指定這個選項會關閉 --chunk-filesize
-e, --enable-binlog 啟用還原資料的二進位制日誌
-V, --version 顯示版本號
-t, --threads 開啟的備份執行緒數,預設是4
-o, --overwrite-tables 如果要恢復的表存在,則先drop掉該表,使用該引數,需要備份時候要備份表結構


檢查備份是否有錯誤
grep -i error /data/mydumper20181018.log


新庫上清空資料庫(先刪表,後drop資料庫)
drop database aa;


關閉binlog,修改/etc/my.cnf檔案,找到
log-bin=mysql-bin
binlog_format=mixed
再這兩行前面加上#,將其註釋掉,再執行/etc/init.d/mysqld restart即可。


用從老庫備份的資料初始化新庫(如果版本不一致,需要手動從老庫匯出使用者資訊,再匯入新庫)
myloader -S /usr/local/mysql/mysql.sock -u root -p 'abc123' -v 3 -t 10 -e y -d /data/backup20181018 >> /data/myloader20181018.log 2>&1 &


檢查匯入是否有錯誤
grep -i error /data/myloader20181018.log

二、資料同步

1、老庫

關閉sql_log_bin
set sql_log_bin=off;


建立資料同步使用者
grant replication slave ,replication client on *.* to 'replication'@'10.1.12.205' identified by 'Replication!2#';
grant replication slave ,replication client on *.* to 'replication'@'10.1.21.118' identified by 'Replication!2#';
grant replication slave ,replication client on *.* to 'replication'@'10.50.16.102' identified by 'Replication!2#';


2、新庫

檢視備份資料的mater的位置
cat /data/backup20181018/metadata


修改檔案/usr/local/mysql/etc/my.cnf,將service-id設定成和老庫不一樣
vi /usr/local/mysql/etc/my.cnf


修改uuid,檔案位置/data/mysql/data/auto.cnf(也就是資料檔案的路徑下),移除auto.cnf,重啟mysql服務重新生成
mv /mysql/data/auto.cnf ..
service mysqld restart


設定主從
CHANGE MASTER TO MASTER_HOST='172.17.0.3', MASTER_USER='repl', MASTER_PASSWORD='mysql', MASTER_PORT=3306,MASTER_LOG_FILE='my-bin.000004', MASTER_LOG_POS=154 for channel 'aa';


開啟主從並觀察同步情況
start slave;
show slave status \G


停止複製stop slave,啟動binlog,修改/etc/my.cnf,重啟mysql服務
log-bin=mysql-bin
binlog_format=mixed
將這兩個引數前面的#去掉
service mysqld restart


重新開啟複製
start slave