version :master mysql 5.6 slave mysql 5.7
env: win7
refer:http://dev.mysql.com/doc/refman/5.7/en/replication-upgrade.htmlhtml
第一步:修改master 配置文件my.inijava
a)关闭mysql cmd---->net stop mysql56;mysql
b)修改my.inisql
log_bin=mysql-bin//开启日志 binlog-do-db=database//须要复制的数据库 port = 3306//端口 server_id =153319538//id 必需惟一
提示:找不到my.ini 文件的,能够去C:\ProgramData\MySQL\MySQL Server 5.7 目录下,这个文件win7默认是隐藏的。打开my.ini会发现已经有许多配置,咱们的 配置必须放在[mysqld]节点下面
c)打开mysql cmd---> net start mysql56;数据库
测试:在命令行输入mysql>show master status; 而且找到File 和 Position 的值记录下来;app
若是显示的是空,说明以前的步骤有误。测试
第二步:建立账户并受权spa
mysql> CREATE USER 'repl'@'localhost' IDENTIFIED BY 'slavepass'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost';
第三步:修改slave 的ini文件命令行
a)关闭mysql b)修改my.ini c)开启mysql 日志
server_id =15382016 replicate-do-table=database.table//只复制指定的表 replicate-ignore-db=database//忽略的数据库 log_bin=mysql-bin//启用日志
启动后,登陆主数据库的帐号和密码等信息,而后启动slave
mysql>change master to master_host='192.168.xxx.210',master_user='repl',master_password='slavepass', master_log_file='mysql-bin.000001',master_log_pos=120;
mysql>start slave;
mysql> show slave status;
若是出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那就ok,若是尝试向master插入数据,就会看到slave 中数据也会更新。
关于my.ini的一些配置信息,能够参考官方文档,仍是有不少灵活的配置选项的。
ps : 一些其余的命令
1.重置master,
mysql>>FLUSH TABLES WITH READ LOCK;//锁表
mysql>reset master
mysql> UNLOCK TABLES;//解锁
2.清除slave
mysql>CHANGE MASTER TO MASTER_HOST='192.168.xxx.210';
mysql>reset slave ;
3.中止slave mysql>stop slave;
补充: 今天看文档发现一些问题须要注意
mysql 并不推荐咱们在Master 中使用过滤,若是要用的推荐在slave中配置。
若是是复制到其余的数据库(好比 dabase1.tableA---> database2.tableA ) 能够在Slave添加
replicate-rewrite-db=
dabase1->
database2
详细配置见,传送门:
补充一: 最近又看了一下,发现mysql 5.7 是能够设置延时的,有许多系统表都值得研究
use performance_schema;
show tables; -- ---配置没mysql主从复制 延迟时间 好比: 让slave 12小时同步一次 channel_name 默认是null 5.7 新增的多元复制, replication_applier_configuration; -- -- 查看当前链路的状态 remaining_delay 指的就是距离上边设定的延时还有多久 replication_applier_status;