CentOS6.5配置MYSQL一主多从详解
2018-06-12 18:05 猎手家园 阅读(589) 评论(0) 编辑 收藏 举报一、环境
1 操作系统 :CentOS 6.5 2 数据库版本:MySQL 5.6.27 3 主机A:192.168.1.1 (Master) 4 从机B:192.168.1.2 (Slave) 5 从机B:192.168.1.3 (Slave)
说明:做1台slave,2台、3台都可以。
二、基本环境配置
MYSQL是通过3306端口访问的,所以要保证防火墙对3306端口的开启。
三、Master的配置
1、配置my.cnf
在Linux环境下MySQL的配置文件的位置是在 /etc/my.cnf ,在该文件下指定Master的配置如下:
[root@mycentos ~]# vim /etc/my.cnf server-id = 1 # 一般用IP的最后一段,这个标识是唯一的 log-bin = mysql-bin # 排除不同步的库 #binlog-ignore-db = test #binlog-ignore-db = mysql #binlog-ignore-db = performance_schema #binlog-ignore-db = information_schema # 选择要同步的库 binlog-do-db = vertical_analysis binlog_format = mixed expire_logs_days = 7 relay-log = relay-log log_slave_updates skip-slave-start
说明:
binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库
binlog-ignore-db 和 binlog-do-db 是互斥的,二选一即可。
2、重启mysql
[root@mycentos ~]# service mysqld restart
3、进入mysql
[root@mycentos ~]# mysql -u root -p
4、 赋予从库权限帐号
允许用户在主库上读取日志,赋予192.168.1.2/3也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
在Master数据库命令行中输入:
mysql> GRANT FILE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES
这里slaver 用户作为同步的时候使用到的用户,可以自己设定。
5、检测授权结果
mysql> use mysql;
mysql> select * from user where host='%' and user='slaver'\G; # 如果Repl_slave_priv项为Y,表示授权成功。
6、查看主数据库master状态
mysql> show master status; +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ | mysql-bin.000004 | 28125 | vertical_analysis | performance_schema ,information_schema,test,mysql | | +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ 1 row in set (0.00 sec)
这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。
四、备份一份主库的数据库,并还原到从库上
从库同步时,就从上面记录的log和position开始同步
五、Slave的配置
1、配置my.cnf
[root@mycentos ~]# vim /etc/my.cnf server-id = 2 # 一般用IP的最后一段,这个标识是唯一的 log-bin = mysql-bin binlog_format = mixed expire_logs_days = 7 relay-log = relay-log # 注意:不同的slave这里也是唯一的 # 排除不需要同步的数据库 #binlog-ignore-db = information_schema #binlog-ignore-db = performance_schema #binlog-ignore-db = mysql #binlog-ignore-db = test # 选择要同步的数据库 replicate-do-db = vertical_analysis replicate-ignore-db = mysql log_slave_updates skip-slave-start slave-skip-errors = all slave-net-timeout = 60
说明:
binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库
binlog-ignore-db 和 binlog-do-db 是互斥的,二选一即可,但最好和主库设置的一至。
2、配置Slave同步信息
#重启数据库 [root@mycentos ~]# service mysqld restart
mysql> stop slave; mysql> change master to master_host='192.168.1.1', master_port=3306, master_user='slaver', master_password='123456', master_log_file='mysql-bin.000004', master_log_pos=28125; # 弄成一行执行!
mysql> start slave;
3、检测从数据库复制功能状态
mysql> show slave status\G; # 其中下面两项都必须为yes。 Slave_IO_Running: Yes Slave_SQL_Running: Yes
六、验证
在主库上建一张表,看下从库是否同步过来。
附:
错误1:Slave failed to initialize relay log info structure from the repository
解决方法:使用reset slave all清空所有的复制信息,然后重置master.info、start slave后复制正常。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术