mysql主从数据库配置,实现分布式读写负载均衡[高并发]
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-05-11 14:17:14
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
开发环境
win2008r2-x64 mysql5.6 192.168.1.100 主服务器
win764-64 mysql5.6 192.168.1.150 从服务器
实现功能
主数据库中数据有更新时同步到其它主机的mysql数据库中,实现备份数据等其它功能,如读写分离等功能
配置步骤
初始化主从数据库数据
打开主数据库先锁定数据为只读状态
flush tables with read lock;
用自己的方法把数据导入到从数据库里
恢复读写状态
unlock tables;
主数据库
打开主数据库my.ini配置文件加入下面配置(启动二进制日志log-bin要通过它来同步数据)
[mysqld] server-id=1 //给每个数据数据库服务的唯一标识不同重复 log-bin=master-bin log-bin-index=master-bin.index
重启mysql服务器打工命令行输入
SHOW MASTER STATUS;
可以看到二进制日志文件名记好下面从数据库中要用到
创建同步需要的账号
#创建新用户 create user tongbu; #repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。 GRANT REPLICATION SLAVE ON *.* TO 'tongbu'@'%' IDENTIFIED BY '********';
从数据库
打开从属服务器的my.ini文件加入下面配置
[mysqld] server-id=2 //给每个数据数据库服务的唯一标识不同重复 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin
打开mysql命令行输入
#连接主数据库 change master to master_host='192.168.1.100', master_port=3306, master_user='tongbu', master_password='***********', master_log_file='master-bin.000001', master_log_pos=0; #启动从数据库同步 start slave;
然后就能同步数据库对数据的操作啦
如果只想同步部分数据库可以在从数据库配置文件中加入
#如果有多个可以复制添加多行 replicate_wild_do_table= 数据库名1.% replicate_wild_do_table= 数据库名2.%
其它配置也可以,但根据网上反应有坑,用这个最保险
同步出错问题解决
查看数据库状态如果有不同步的时候可以用下面语句查看状态
#查看主数据库状态 show master status; #查看从数据库状态 show slave status\G;
如上两个选项都是yes的状态下同步才是正常的
注意:同步数据只是同步主数据库听sql语句操作在从数据库中也执行一下,如果从数据库中没有这个数据库就会报错,使用show slave status 可以查看有没有报错
如果两步数据时出错以后的同步操作就停止啦
如果有错误但不影响后面的操作可以用下面语句忽略本次错误继续执行同步(数据差异小不影响的情况下可以这样忽略继续运行就可以,如果数据差异太大就直接手动同步数据再运行主从同步)
set global sql_slave_skip_counter=1; start slave; show slave status\G;
备注:上面使用show slave status\G 的时候报错,去掉后面的\G在navicat下运行时显示很乱如下:
如果在cmd命令行下执行则正常,没那闲工功查为啥啦.就这样吧