mysql主从复制配置

一、复制两个mysql

在这里插入图片描述

二、配置两个my.ini

1.主库my.ini

[mysqld]
#主服务器唯一ID
server-id=3
#启用二进制日志
log-bin=master-bin
#设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#设置需要复制的数据库
binlog-do-db=test0
#设置binlog格式,MIXED,ROW,STATEMENT
binlog_format=STATEMENT

#mysql5.7.4以后的版本需要加下面这行,否则会报sql-mode错误。
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2.从库my.ini

[mysqld]
port=3307
#主服务器唯一ID,与主库不能相同
server-id=1
#设置不要复制的数据库(可设置多个)
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
#设置需要复制的数据库
replicate_wild_do_table=test0.%
#replicate-do-db=test0.%,这句不行,必须用上面这句

sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

注意,从库配置了3307端口,因为我在一台机器上测试。端口不能重复。

3.分别启动两个数据库

可以开黑框启动,也可以作为服务启动。我这里用的是mysqld --console启动黑框。

注意观察端口,主库是3306,从库是3307
在这里插入图片描述

三、配置用户(在主库上操作)

我用navcate操作。

1.新增用户

在这里插入图片描述

也可以用命令行创建用户
CREATE USER ‘username’@‘ip’ IDENTIFIED BY ‘password’;

2.给用户授权可以复制

在这里插入图片描述

也可以用命令行授权
#授权用户复制的权限(从服务器ip)
GRANT REPLICATION SLAVE ON . TO ‘username’@‘ip’;

3.查看log的位置

执行如下两个命令,并且记住其中的内容

FLUSH PRIVILEGES;
show master status;

在这里插入图片描述

四、配置从库

切换到从库,

1.执行配置命令

#master_host 主数据库地址
CHANGE MASTER TO master_host ='localhost',
#设置主数据库的端口号
master_port=3306,
#上一步中主数据库创建的从库用户
master_user ='jason',
#上一步中主数据库创建的从库密码
master_password ='123456',
#上一步中保存的file
master_log_file ='master-bin.000002',
#上一步中保存的position
master_log_pos = 938;

在这里插入图片描述

2.看状态

show slave status

在这里插入图片描述

3.启动slave

start slave

在这里插入图片描述

4.再看状态

显示成功yes,yes
在这里插入图片描述

五、主从复制延时问题解决

通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断:数值越大,延时越严重。
在这里插入图片描述

修改从库的配置文件
vi /etc/my.cnf

[mysqld]
#关闭从库日志写入
log_slave_updates=off
innodb_flush_log_at_trx_commit=0
global sync_binlog=500;

六、常见问题

1.Slave_IO_Running: No解决办法:

因为我是两个mysql拷贝的
因为我是两个mysql拷贝的
因为我是两个mysql拷贝的,

里面的一个uuid一样。所以要删除auto.cnf。并且重启mysql。

在这里插入图片描述
在这里插入图片描述

2.Slave_SQL_Running: No

产生的原因是主从库不一致,造成某些语句不能执行。一般有两种方法:

跳过错误的语句

stop slave;
set global sql_slave_skip_counter=5;  #跳过几条就写几 ,这个例子是跳过5条语句
start slave;

重新同步数据,重新设置master_log_pos

#数据库同步完成后执行
change master to master_log_file=xxxx,master_log_pos=xxxxx
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值