MySQL数据库迁移笔记

来源:互联网 发布:javaweb书籍推荐知乎 编辑:程序博客网 时间:2024/04/23 21:30

这次的MySQL数据库迁移,是从中国联通到AWS,而AWS由于封装了一些操作,因此命令上会和中国联通的略微不同(中国联通只使用常规的MySQL命令)

以下的步骤是设置成master-master的关系


1. 在AWS和联通上创建用于replication的用户repl 


CREATE USER 'repl'@'#IP#' IDENTIFIED BY '#password#';
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl'@'#IP#' IDENTIFIED BY '#password#';

由于我设置的是master-master关系,所以需要分别在AWS和联通上运行一次,如果只是master-slave,那么只需要在master上运行即可


2. 确保timezone一致

SELECT @@global.time_zone, @@session.time_zone;
master-slave的话这步可以跳过,但是master-master的话,必须确认两台mysql的timezone是一致的,否则同步的时候会出现error,mysql官网上也建议timezone一致


在/etc/my.cnf中添加timezone信息

timezone=’UTC’


添加timezone相关的data

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p

3. 锁联通DB

FLUSH TABLES WITH READ LOCK;SET GLOBAL read_only = ON;   


4. 查看bin log和position

show master status;show slave status;

5. 复制db

mysqldump --databases #数据库名字# --single-transaction --compress --order-by-primary -u root -p#联通root密码# | mysql --host=#AWS endpoint# --port=3306 -u #aws root密码# -p


6. 释放锁

SET GLOBAL read_only = OFF;UNLOCK TABLES;


7. 设置master-master

联通:

CHANGE MASTER TO MASTER_HOST = 'aws ip', MASTER_USER = 'repl', MASTER_PASSWORD = 'repl的密码', MASTER_LOG_FILE = ‘#bin log name#', MASTER_LOG_POS = #position#; 

AWS:

call mysql.rds_set_external_master ('联通IP', 3306, 'repl', 'repl密码', '#bin log name#', #position#, 0);


8. 开始replication

联通:

start slave;


AWS:

call mysql.rds_start_replication;



0 0