开发十年,就只剩下这套Java开发体系了 >>>
开始前 请 保证两台主机的 防火墙、杀毒软件 不会阻止两台主机的正常通信 。下面通过6步操作实现主从复制!
1、在主库上创建用于同步数据的用户:
mysql>
grant replication slave,File
on *.* to
'user_4_slave'@'192.168.1.%' identified by 'pwd_4_slave';
flush privileges;
说明一下192.168.0.%,这个配置是指明允许连接的slave服务器的ip,这里%是通配符,表示192.168.0.0-192.168.0.255 的slaver 都可以以user_4_slave用户登陆主服务器。
你也可以指定固定Ip 直接把整个ip替换成 % 。
创建的具体信息可以通过navicat查看mysql库的user表。
创建完用户后务必在slave 所在的主机上连一下master库测试一下是否能正常连接!!!!以防有坑
2、在A服务器上,修改主库的配置信息 (my.ini或my.cnf)先找到server-id,在此行的下方追加如下信息:
# Server Id.
server-id=1
log-bin=mysql-bin
binlog-ignore-db=information_schema #忽略这个库
binlog-ignore-db=mysql #忽略这个库
binlog-do-db=world #同步的目标数据库world
修改完毕 重启Mysql
3、在B服务器上,修改从库配置(my.ini或my.cnf),5.7版本的配置有精简:
# Server Id.
server-id=2 #不能与A配置相同
log-bin=mysql #这里不是mysql-bin
修改完毕 重启Mysql
============配置结束===========================================
下面开始sql设置:
4、在master上执行:show master status; 以获取File文件名和Postion的数值
show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000004 | 782 | world | information_schema,mysql | |
+------------------+----------+--------------+--------------------------+-------------------+
5、指定Slave的Master ,在slave上执行:(sql中的最后一行)
change master to master_host='192.168.1.106'
, master_user='user_4_slave',master_password='pwd_4_slave'
, master_log_file='mysql-bin.000004',master_log_pos=782 ;
6、开始测试:
启动slave : start slave ;
查看slave状态: show slave status;
在master上进行更新world库中的city表,查看slave库表中的数据是否同步即可。
update city set name = 'Kabul0000012' where name like 'Kabul%' ;
SELECT * from city ;
查询从库:
SELECT * from city where name like '%Kabu%';
在后续应用中,可以再配置 阿里的 变形虫 实现程序对数据库层的透明访问.