mycat分離分片表
要求:不影響業務情況下進行分離日誌表。
實驗計劃:
1.使用pt工具導出部分庫、部分表,並應用備份集。
2.搭建部分表主從同步。
3.修改mycat配置到最終版本,此時不進行reload。
4.等待業務低谷或晚上,進行表rename、mycat進行reload,至此分離日誌表完成。
預估影響業務時間<5秒。
實驗步驟:
1.innobackupex 使用--include 參數導出部分數據庫,測試使用--tables ,--tablefiles,參數導出未成功,可能是使用方法有誤。
innobackupex --include="test1.test|test2.test|test3.test|test1.test1|test2.test1|test3.test1|mysql.*" --no-timestamp /data/xtrabackup/mer --user=root -p123456
導出測試的test1--test3的test表,test1--test3的test1表.
出現問題可以檢查“創建備份集文件目錄權限”“導出語句”“導出備份集目錄中的是否有表子目錄”“主機磁盤空間不足”等問題,
這些問題均是筆者遇到過的。
實驗中不在進行增備,原理相同,只是添加參數即可進行增備。
應用備份集
innobackupex --apply-log /data/xtrabackup/mer --user=root -p123456
應用完成,查看備份集分庫目錄有表文件,一個表對應2個文件,如果沒有“應用備份集”不會有這2個文件。
2.搭建部分表主從同步。
傳輸備份集,這裏使用rsync傳輸,如果線上權限控制不允許使用rsync,可以通過使用sftp 進行傳輸。
rsync -av mer XHY005118:/data01/mysql/ --118是搭建的從庫IP
從庫搭建mysql,此步驟不再贅述,註意點進行截圖。
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/ --datadir=/data01/mysql/data3306/
將rsync傳輸的備份集cp到datadir
mv mysql mysql.bak --重要
cp -r * ../data3306/
chown -R mysql:mysql /data
chown -R mysql:mysql /data01/ --註意
起庫
mysqld_safe --defaults-file=/etc/my.cnf&
啟動成功。
搭建主從
vi xtrabackup_binlog_pos_innodb
CHANGE MASTER TO MASTER_HOST='192.168.5.116',MASTER_USER='****',MASTER_PASSWORD='*****',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000023',MASTER_LOG_POS=13580;
start slave;
搭建成功。
3. 修改mycat配置文件
修改<datahost>
修改<schema><table>
修改<datanode>
登錄管理端口,輸入reload @@config_all;
reload @@config;
4.rename table schema;
RENAME TABLE test.test TO test1.test;
RENAME TABLE test.test1 TO test1.test1;
實際測試上百萬數據的table執行rename,時間在毫秒級。
改完表後,立即reload mycat。
測試:實測插入數據,mycat會根據分片規則將數據插到對應的新schema的分片表中。
mycat分離分片表