mysql主从复制配置
发布时间2022-06-20 19:53:25【MySql】50人已围观
简介 如何配置mysql主从复制?

mysql主从复制配置
1、准备两台服务器,都安装好同版本的mysql数据库
2、Master主数据库在/etc/my.conf文件配置:(Master主服务执行)
[mysqld] ## 同一局域网内注意要唯一,数字自定义 server-id=100 read-only=0 # 主库是写库 ## 开启二进制日志功能,名称可以自定义 log-bin=mysql-bin # 注意:skip-name-resolve一定要加,不然连接mysql会超级慢 skip-name-resolve ## 退出后重启数据库:systemctl restart mysqld
3、Slave从数据库在/etc/my.conf文件配置:(Slave从服务执行)
[mysqld] ## 同一局域网内注意要唯一,数字自定义 server-id=101 read-only=1 # 从库是读库 ## 开启二进制日志功能,名称可以自定义 log-bin=mysql-server-bin ## relay_log配置中继日志 relay_log=edu-mysql-relay-bin ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断 ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 slave_skip_errors=1062 # 注意:skip-name-resolve一定要加,不然连接mysql会超级慢 skip-name-resolve ## 退出后重启数据库:systemctl restart mysqld
4、在master主数据库上运行(Master主服务执行)
## 登录master数据库 mysql -u用户名 -p # 授予slave从数据库可以同步master服务 ## 注意mysql5.7可以把授权用户直接在一行执行 ## grant replication slave,replication client on *.* to 'root'@'slave服务的ip' identified by 'slave服务的密码'; flush privileges; ## mysql8.0授权和创建用户需要分开执行 ## create user 用户名@'slave服务ip' identified by '密码'; GRANT ALL PRIVILEGES ON *.* TO '用户名'@'slave服务的ip'WITH GRANT OPTION; flush privileges; # 查看mysql现在又哪些用户集对应的ip权限(可以不执行,只是一个查看) select user,host from mysql.user;
5、查询master服务的binlog文件名和位置(Master主服务执行)
show master status; File:字段为日志文件名 Position:字段为复制的位置
6、slave进行关联master主服务(Slave从服务执行)
## 登录slave数据库 mysql -u用户名 -p change master to master_host='master主服务ip',master_user='root',master_password='master主服务密码',master_port=3306,master_log_file='master主服务的日志文件名',master_log_pos=master主服务复制的位置; ## 启动slave从服务 start slave; ## 再查看主从同步状态,\G表示换行查看 show slave status\G; ## 显示说明: Slave_IO_State:与主服务连接的状态 Master_Host:主服务的ip Master_User:主服务的账号 Master_Port:主服务的端口 Master_Log_File:主服务的二进制日志文件 Read_Master_Log_Pos:主服务的复制位置 Relay_Log_File:复制到中继日志的文件名 Relay_Log_Pos:复制到中继日志的位置 Slave_IO_Running:Yes和Slave_SQL_Running:Yes就表示配置成功 ## 如果配置不成功,查看Slave_SQL_Running_State报错原因说明 Slave_IO_Running:Connecting # 表示连接失败 Last_IO_Error:# 错误提示信息
7、如果出现错误,按以下操作执行(Slave从服务中执行)
stop slave; # 停止从服务 set global sql_slave_skip_counter=1; # 将连接计数归1 start slave; # 启动从服务 show slave status\G; # 查看连接状态 ## 如果还不行,请重新检查账号、密码、端口、日志文件、复制位置是否正确
8、如果账号密码确认没有错误,Slave_IO_Running:Connecting连接不上,请先用远程连接工具(Navicat)连接master数据库,是否能够连接成功
## 如果远程连接都连接不成功,那么两种可能 ## 1.防火墙问题,可以关闭防火墙再试 ## 2.在/etc/mysql/my.conf配置文件中添加绑定bind-address=0.0.0.0再试
赞一个! (2)
上一篇:redis持久化
文章评论
