数据量大的情况下,需要先把主服务器的数据导入到从服务器数据库中,否则会同步失败的。
主服务器地址: 192.168.1.127从服务器地址:192.168.1.100
主服务器MySQL配置
编辑配置文件my.ini,在[mysqld]下面增加下面3行
#主服务器ID
server-id=127
log-bin=master3306-bin
log-bin-index=master3306-bin.index
#以下代码可以省略,特殊说明:忽略的只是数据,而不是数据库本身,数据库有多少创建多少,指定忽略的数据库是不同步这个数据库的数据(数据库是空的)
binlog-do-db=testdb #待同步的数据库
binlog-ignore-db=information_schema #忽略不同步的数据库
binlog-ignore-db=mysql #忽略不同步的数据库
binlog-ignore-db=test #忽略不同步的数据库
重启MySQL
创建REPLICATION SLAVE帐号
在系统命令行中输入mysql -uroot -p123456
#进入MySQL命令行后,输入以下命令:
#其中,'backup'是新增加的用户名,'192.168.1.100'是从服务器的地址,100可以换成%,'111111'是增加用户的密码。
grant replication slave on *.* to 'backup'@'192.168.1.100' identified by '111111';
#刷新权限
flush privileges;
#这些需要记录,File和Position,这里忽略的数据库我删除了其他两个,由于页面款短的原因。
show master status;
+-----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------------+----------+--------------+------------------+
| master3306-bin.000005 | 632 | testdb | mysql |
+-----------------------+----------+--------------+------------------+
#退出
exit
从服务器MySQL配置
编辑配置文件my.ini,在[mysqld]下面增加下面3行
#从服务器ID
server-id=100
log-bin=mysql3306-bin
relay-log=relay-log
relay-log-index=relay-log-index
#以下代码可以省略
binlog-do-db=testdb #待同步的数据库
binlog-ignore-db=information_schema #忽略不同步的数据库
binlog-ignore-db=mysql #忽略不同步的数据库
binlog-ignore-db=test #忽略不同步的数据库
重启MySQL
连接到主服务器MySQL的指定主库,启动slave
在系统命令行中输入mysql -uroot -p123456
#进入MySQL命令行后,输入以下命令:
#'192.168.1.127'主服务器地址
#'backup' 创建的用户名
#'111111' 创建的用户密码
#3306 主服务器MySQL的端口号
#以下两个值为主服务器执行show master status后显示的字段值
#'master3306-bin.000005' File字段的值
#632 Position字段的值
change master to master_host='192.168.1.127',master_user='backup',master_password='111111',master_port=3306,master_log_file='master3306-bin.000005',master_log_pos=632;
#如果报错,输入reset slave;
#启动slave
start slave;
#查看是否启动成功
show slave status\G
#显示以下两行,表示从服务器正常工作了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#退出
exit