您的位置:首页 > 数据库 > MySQL

MySQL数据库迁移笔记

2017-02-16 14:55 417 查看
这次的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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: