1、保证两个数据库中的库和数据是一致的;
2、在主数据中创建一个同步账号(可不创建使用现有的),如果仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。
1)、创建一个账号,账号:master 密码: 123456
Mysql>CREATE USER \'master\'@\'%\' IDENTIFIED BY \'123456\';
Mysql>FLUSH PRIVILEGES;
Mysql>GRANT REPLICATION SLAVE ON *.* TO \'master\'@\'%\' IDENTIFIED BY \'123456\' WITH GRANT OPTION;
3、配置主数据库
编辑my.cnf如下
[mysqld]\nserver-id=1
log-bin=master-bin\nlog_bin_index =master-bin.index
binlog_do_db=miner ##miner是要同步的数据库的名称
binlog_do_db=miner2 ##miner2多个数据库同步要写binlog_do_db不能用,号隔开
binlog_ignore_db=mysql\nuser=mysql
4、重启mysql
5、查看主服务器状态:
mysql> show master status;
注意:记录好File和Position,后面要用
6、配置从数据库:
1)需要关闭MySQL,修改好my.cnf后再重启,如下:
[mysqld]\nserver-id=2
log-bin=slave-bin
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
2)在从服务器里配置连接主服务器的信息:
Mysql>stop slave;\nMysql>change master to master_host=\'192.168.137.130\', master_port=3306, master_user=\'master\', master_password=\'123456\', master_log_file=\'master-bin.000008\', master_log_pos=106;
说明:192.168.137.130是主服务器的id,master_log_file=\'master-bin.000008\'是主服务器的File,master_log_pos=106是主服务器的Position;
每次重新启动主服务器,master_log_file和master_log_pos都会变。
3)查看状态
mysql> show slave status\\G;
说明:Slave_IO_Running: Yes\nSlave_SQL_Running: Yes\n都是yes就说明成功了。
4)若 Slave_SQL_Running: no 请重复执行以下内容,直至yes:
mysql>stop slave;
mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; \nmysql>start slave;
5)若 Slave_IO_Running: no
1、检查master账号密码及授权。
2、核对master_log_file、master_log_pos是否正确
6)若 Slave_IO_Running: YES和Slave_SQL_Running: YES 都YES还是不同步
mysql>stop slave;
##设置同步延迟时间,状态两个都是YES时候发现数据还是不同步需要设置。
mysql>change master to master_heartbeat_period = 10;
mysql>start slave;
0