2个mysql互为主从的集群

为了避免单点故障的产生,在分布式应用的部署上,各种节点都应该有复数个。mysql也不应该例外,今天介绍下利用mysql自带的binlog实现的2个mysql同步构建。

1.配置文件

配置文件的内容,主要为开启binlog,自增主键防止冲突等。

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
 
#========主从复制关键配置======================
server_id=1 #主库和从库需要不一致
log-bin=mysql-bin #二进制文件存放路径,存放在根目录data
auto_increment_increment = 2 #自增ID的步长
auto_increment_offset = 1 #自增ID的起点,另一个要是2
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
slave-skip-errors = all
binlog-ignore-db=mysql

注意另外一个数据库的server_id,auto_increment_offset要不一样。

2.数据库同步

请使用mysqldump,或者一些客户端工具来实现数据的同步。

如果是新建的数据库,那么不需要同步。

3.配置互为主从的关系

进入第一个数据库,输入以下命令,创建供第二个数据库使用的账户。这个语句创建的用户是slave/slave,也只拥有slave的权限。

grant replication slave on *.* to 'slave'@'%' identified by 'slave'

 检查第一个数据库master status。

show master status

会显示如下结果,binlog文件,以及这个文件当前语句的位置。 

ps:binlog会记录对数据库的每一次更新操作的语句,每次重启数据库会开启新的binlog。

如果上面的结果没有显示,那么说明配置文件可能写错了,或者mysql没有加载到配置文件。 

 

接下来,进入第二个数据库。输入以下命令,把第一个数据库认作master。

 change master to master_host='192.168.3.220',master_port=3306,master_user='slave',master_password='slave',master_log_file='mysql-bin.000021 ',master_log_pos=1758522;

 然后,启动slave。并检查slave状态。

#启动slave
start slave

#检查slave状态
show slave status

如果以下两个值均为Yes,则启动成功。 

如果以上两个值有不是yes的,往后翻,找到 Last_IO_error 或者Last_SQL_error。会告诉你为什么IO失败,为什么SQL失败。

IO的error多半是没有能够链接上主库,可能是网络不通、账户密码错误、binlog的位置错误,等等原因。

SQL的error多半是数据不同步导致的。

 

那么,现在,第一个数据库是主库,第二个数据库是从库,就建立好了。

接下来只要重复一遍操作,第二个数据库做主库,第一个数据库做从库, 就好了。

这样的互为主从配好以后,任何一个库的改动,都会同步到另一个库。

 

如果想建立更大的集群,推荐使用PXC的技术。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值