汉克书

http://hankbook.cn

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

中小型规模网站集群架构:MySQL主从复制

: Ago linux运维群:https://hankbook.cn


前言:

MySQL的数据是如此的重要,不做个备份吗?

部署

1.快速部署方案

1.安装好要配置从库的数据库,配置好log-bin和server-id
2.无需配置主库my.cnf文件,主库的log-bin和server-id参数默认就是配置好的
3.登录主库增加用于从库连接主库同步的账号例如:rep,并授权replication slave同步权限
4.使用半页mysqldump带--master-data=1备份的全备数据恢复到从库,
5.在从库执行change master to ...语句
6.从库开启同步开关,start slave
7.从库 show slave status\G,检查同步状态,并在主库进行更新测试。
主库

1.开启节点

[shell]:echo -e "log-bin=mysql-bin\nserver-id=1">>/etc/my.cnf
[shell]:/etc/init.d/mysqld restart

2.添加从库用户

[mysql]:grant replication slave on *.* to 'rep'@'172.16.1.%' identified by '123456';
[mysql]:flush privileges;

3.锁库

[mysql]:flush table with read lock; 
[mysql]:show master status; 

show variables like "%timeout%"; 查看锁的超时时间interactive和wait
4.备份

[shell]:mysqldump -uroot -p123456  -A -B --events|gzip>/opt/rep.sql.gz

5.开锁

[mysql]:unlock tables;
从库

小坑:因为yum仓库的mysql是克隆关系,所以加上此命令

mv /application/mysql/data/auto.cnf{,.bak}

就跟克隆虚拟机效果一样
1.增加节点

[shell]:echo -e "log-bin=mysql-bin\nserver-id=2">>/etc/my.cnf
[shell]:/etc/init.d/mysqld restart

2.导入数据
把主库的给scp到从库上,并进行数据

[shell]:zcat rep.sql.gz |mysql -uroot -p123456

3.配置从库数据
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 1471 | | | |
+------------------+----------+--------------+------------------+-------------------+

[mysql]:CHANGE MASTER TO 
MASTER_HOST='172.16.1.51',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1471;

4.开启从库

start slave;

5.查看状态

[mysql]:show slave status\G
#出现两个yes就好了
#Slave_IO_Running: Yes
#Slave_SQL_Running: Yes

步骤回顾

步骤回顾:
 1.准备两台数据库环境,或者单台多实例环境,能否正常启动和登录。
 2.配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id,不能和主库及其他从库一样,一般不开启从库log-bin功能。注意配置参数后要重启生效。
 3.登录主库增加用于从库连接主库同步的账号:例如rep,并授权replication slave同步的权限。
 4.登录主库,整库锁表flush table with read lock(窗口关闭后即失效,超时参数倒了也失效。)然后show master status 查看binlog的位置状态。
 5.新开窗口,linux命令行备份或导出原有的数据库数据,并拷贝岛从库所在的服务器目录。
     如果数据量很大,并且允许停机。可以停机打包,而不用mysqldump
 6.解锁主库:unlock tables;
 7.把主库导出的原有数据恢复岛从库。
 8.根据主库的show master status查看binlog的位置状态,在从库执行change master to ...语句
 9.从库开启同步开关,start slave。
 10.从库show slave status、G,检查同步状态,并在主库进行更新测试。
posted on 2017-04-06 13:34  汉克书  阅读(432)  评论(0编辑  收藏  举报