CentOS 6.5下MySQL 5.7.20主从复制架构配置
来源:互联网 发布:久其软件打不开 编辑:程序博客网 时间:2024/06/08 13:16
from
http://blog.csdn.net/testcs_dn/article/details/51423861
主(Master): 172.16.2.126
从(Slave): 172.16.2.184
前提条件
Mysql5.7.20已经安装在CentOS6.5
Mysql已经允许远程登录
以上步骤,请参考 CentOS65安装Mysql5.7.20
配置master(主服务器)
1. vi /etc/my.cnf
2. #[必须]启用二进制日志
3. log-bin=mysql-bin
4. #[必须]服务器唯一ID,默认是1,一般取IP最后一段
5. server-id=1
配置slave(从服务器)
1. vi /etc/my.cnf
2. #[可选]启用二进制日志
3. log-bin=mysql-bin
4. #[必须]服务器唯一ID,默认是1,一般取IP最后一段
5. server-id=2
重启主从服务器的mysql服务
/etc/init.d/mysqld restart
重启的目的是使用刚才的配置生效,主从都需要重启;
注意:服务名是“mysqld”,不是某同学文章中的“mysql”!
在主服务器上创建备份专用帐户
1. mysql -uroot -p123456 -e "GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'172.16.2.184' IDENTIFIED BY '123456';"
注意:
1、这里是用GRANT创建用户并授权远程登录权限,而不是使用“Create User”来创建;
2、命令是在Shell下执行,不是在“mysql”客户端中执行;
我是为了方便,直接把命令都写到一行里了,当然你也可以先用“mysql -uroot -p123456”登录后,
再执行“GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'172.16.2.184' IDENTIFIED BY '123456';”;
查询master(主服务器)的状态
1. mysql -uroot -p123456 -e "show master status;"
这是在主服务器上执行的,看准了。
1. mysql: [Warning] Using a password on the command line interface can be insecure.
2. +------------------+----------+--------------+------------------+-------------------+
3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
4. +------------------+----------+--------------+------------------+-------------------+
5. | mysql-bin.000001 | 619| | | |
6. +------------------+----------+--------------+------------------+-------------------+
File列和Position列的值一会儿我们要用到。
配置Slave启动主从复制
1. mysql -uroot -p123456 -e "change master to master_host='172.16.2.126',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=619; start slave;"
2. //注意不要断开,619数字前后无单引号。
3. //启动从服务器复制功能
master_host=主服务器IP
master_user=在主服务器上创建的备份用户名
master_password=备份用户密码
master_log_file=查询master(主服务器)的状态得到的File列的值
master_log_pos=Position列的值
start slave:启动从服务器复制功能
检查从服务器复制功能状态
1. mysql -uroot -p123456 -e "show slave status\G;"
输出如下:
1. *************************** 1. row ***************************
2. Slave_IO_State: Waiting for master to send event
3. Master_Host: 172.16.2.126
4. Master_User: backup
5. Master_Port: 3306
6. Connect_Retry: 60
7. Master_Log_File: mysql-bin.000001
8. Read_Master_Log_Pos: 154
9. Relay_Log_File: CentOS65M2-relay-bin.000005
10. Relay_Log_Pos: 367
11. Relay_Master_Log_File: mysql-bin.000002
12. Slave_IO_Running: Yes
13. Slave_SQL_Running: Yes
14. Replicate_Do_DB:
15. Replicate_Ignore_DB:
16. Replicate_Do_Table:
17. Replicate_Ignore_Table:
18. Replicate_Wild_Do_Table:
19. Replicate_Wild_Ignore_Table:
20. Last_Errno: 0
21. Last_Error:
22. Skip_Counter: 0
23. Exec_Master_Log_Pos: 154
24. Relay_Log_Space: 745
25. Until_Condition: None
26. Until_Log_File:
27. Until_Log_Pos: 0
28. Master_SSL_Allowed: No
29. Master_SSL_CA_File:
30. Master_SSL_CA_Path:
31. Master_SSL_Cert:
32. Master_SSL_Cipher:
33. Master_SSL_Key:
34. Seconds_Behind_Master: 0
35. Master_SSL_Verify_Server_Cert: No
36. Last_IO_Errno: 0
37. Last_IO_Error:
38. Last_SQL_Errno: 0
39. Last_SQL_Error:
40. Replicate_Ignore_Server_Ids:
41. Master_Server_Id: 1
42. Master_UUID: 81c4f861-c470-11e7-a486-08002710d042
43. Master_Info_File: /var/lib/mysql/master.info
44. SQL_Delay: 0
45. SQL_Remaining_Delay: NULL
46. Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
47. Master_Retry_Count: 86400
48. Master_Bind:
49. Last_IO_Error_Timestamp:
50. Last_SQL_Error_Timestamp:
51. Master_SSL_Crl:
52. Master_SSL_Crlpath:
53. Retrieved_Gtid_Set:
54. Executed_Gtid_Set:
55. Auto_Position: 0
56. Replicate_Rewrite_DB:
57. Channel_Name:
58. Master_TLS_Version:
主要查看以下两项:
1. Slave_IO_Running: Yes
2. Slave_SQL_Running: Yes
Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
若未在主服务器上创建备份用户,Slave_IO_Running 就一直处于“connect”状态。
主从服务器测试
在主服务器上执行以下操作:
你还是登录Mysql再操作吧,这次命令比较多,不组合了!
1. mysql -uroot p123456
2.
3. create database db_test_slave;
4. use db_test_slave;
5. create table tb_test(id int(3), name varchar(50));
6. insert into tb_test values(1,'hello slave');
7. show databases;
在从服务器上执行以下操作:
1. mysql -uroot -p123456 -e "show databases; use db_test_slave; select * from tb_test;"
查看输出:
1. +--------------------+
2. | Database |
3. +--------------------+
4. | information_schema |
5. | db_test_slave |
6. | mysql |
7. | performance_schema |
8. | sys |
9. +--------------------+
10. +------+-------------+
11. | id | name |
12. +------+-------------+
13. | 1 | hello slave |
14. +------+-------------+
看到在主服务器上创建的数据库、数据表、插入的数据记录了吗?
结束语
上面提到了“如果你的从服务器下面再挂从服务器,启用二进制日志就是必选的!”,主从只是一个相对概念,一台MySQL服务即可以是主,也可以是从。
一开始讲了主从复制的一些好处,但是单一的主从复制也有其不足:当更新操作增加到一定程度后,主服务器的任务会过分繁重,成为瓶颈,从而使系统性能大幅度下降。另外当主机出现故障时,整个系统都涉及更新的功能都不能正常使用,因此系统的可靠性依然不高。
- CentOS 6.5下MySQL 5.7.20主从复制架构配置
- CentOS 6.5 下MySQL 5.7.12主从复制架构配置记录
- CentOS 7 下MySQL 5.7.12主从复制架构配置记录(亲自验证可行)
- CentOS 6.5 下MySQL 5.6.38主从复制架构配置记录
- Centos下MySql主从配置
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- 阿里云centos配置mysql主从复制
- centos下搭建MySQL主从复制
- 分布式架构学习之:034--MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- CentOS Mysql主从复制
- mysql主从复制架构
- MySQL主从复制架构
- CentOS下使用yum安装Mysql,以及Mysql主从复制的配置
- Linux下MySql主从复制配置
- Linux下配置MySQL主从复制
- ubuntu环境下配置mysql主从复制
- wamp环境下MySQL配置主从复制
- ACM-11月19日周日周末训练心得
- 新公司新入手的一个新项目的心路历程
- java排序算法(持续更新)
- 2017.11.19
- 二级列表实现购物车的效果
- CentOS 6.5下MySQL 5.7.20主从复制架构配置
- linux(vi)常用命令
- Dijkstra(邻接表+优先队列)
- 仿QQ空间打赏功能实现
- Linux常用命令
- HDU1114 Piggy-Bank(完全背包)
- Zookeeper集群安装配置详解
- 树莓派sip视频电话-4:使用高清摄像头
- 使用Activity做底部弹出框