主MySQL
my.ini 配置
# mysql server 的唯一id
server_id = 3306
log-bin=log
# 需要同步的数据库
binlog-do-db=faner
# 不需要同的数据库
binlog-ignore-db=mysql
创建从数据库连接用户
grant replication slave on *.* to root@10'%' identified by '123456'
从MySQL
my.ini 参数配置
server_id = 3307
# 要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名
replicate-do-db=faner
#要忽略的数据库
replicate-ignore-db=mysql
设置从数据库和主数据库之间的关联
change master to master_host='49.123.105.71', master_user='root', master_password='123456', master_log_file='xxx',master_log_pos=xxx;
参数说明
master_log_file 和 master_log_pos来源:在主Mysql中执行[ show master status; ] ; master_log_file对应[File]字段,master_log_pos对应[Position]字段
开启从MySQL的数据同步
start slave;
# 关闭
# stop slave
重启mysql,查看从机配置
show slave status;
显示
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
则配置完全,正在同步。
注意点
- 如果从数据库你是直接复制主数据库,需要修改 data 目录中的auto.cnf文件中的值,使其不重复,否则会导致从数据库开启数据同步失败。
- 遇到【1062】错误的解决方法:
stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave; show slave status\G;
测试
在主MySQL使用命令 insert 或者 update 数据,然后在从数据库中使用命令查看。 由于我是通过修改端口的方式达到单机多例的。所以主数据库端口为 3306,从数据库端口为3307. 非默认端口的cmd 为:
mysql -h 127.0.0.1 -P3307 -uroot -p