ShardingJdbc准备 - MySql完成主从复制

主库master:192.168.31.16

从库slave:192.168.31.17


一、主库配置

1. 修改 /etc/my.cnf文件,添加以下配置

vim /etc/my.cnf
[mysqld]
# 同一局域网内注意要唯一
server-id=100  
# 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
# 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
# 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
# 重启Mysql服务 
systemctl restart mysqld

2. 在master服务器授权slave服务器可以同步权限

mysql > mysql -uroot -proot
# 授予slave服务器可以同步master服务
mysql > grant replication slave, replication client on *.* to 'root'@'slave服务的ip' identified by 'slave服务器的密码';
mysql > flush privileges;
# 查看MySQL现在有哪些用户及对应的IP权限(可以不执行,只是一个查看)
mysql > select user,host from mysql.user;

3. 查询master服务的binlog文件名和位置,以便从服务器配置使用

 日志文件名:mysql-bin.000004

 复制的位置:1066

二、从库配置

1. 修改 /etc/my.cnf文件,添加以下配置

vim /etc/my.cnf
[mysqld]
# 设置server_id,注意要唯一
server-id=102
# 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
# relay_log配置中继日志
relay_log=edu-mysql-relay-bin
#复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
# 如果需要同步函数或者存储过程
log_bin_trust_function_creators=true
# 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
# 重启Mysql服务 
systemctl restart mysqld

2. 从库进行关联主库

mysql > mysql -uroot -proot
# 主库查询的binlog文件名和位置
mysql> change master to master_host='master服务器ip', master_user='root', master_password='master密码', master_port=3306, master_log_file='mysql-bin.000004',master_log_pos=1066;

3. 启动主从复制

mysql> start slave;

4. 查看主从同步状态

mysql> show slave status\G;

 5. 停止主从复制

mysql> stop slave;

三、遇到的问题

1. 解决主库user表中’root’@’%’没有grant的权限

# 分配权限
mysql> update mysql.user set Grant_priv='Y',Super_priv='Y' where user = 'root' and host = '%';
# 刷新权限
mysql> flush privileges;
# 重启Mysql服务 
systemctl restart mysqld

2. 解决在给slave分配用户的时候,设置的密码太简单

#设置密码验证强度为低
mysql> set global validate_password_policy=LOW;
# 设置密码长度(设置的长度最小为4)
mysql> set global validate_password_length=4;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值