一、配置主服务器
1. 找到my.ini文件
mysql5.7配置文件my.ini存放在C:\ProgramData\MySQL\MySQL Server 5.7\目录下, 在windows10下ProgramData是个隐藏目录。可以使用mysql命令行命令查看数据文件所在位置:
mysql>select @@datadir;
2. 修改my.ini文件
使用文本编辑器打开my.ini文件,修改如下选项:
server-id=10 #保证全局唯一
log-bin=f:/mysql/binlog/test_bin #指定保存日志文件的路径,从库会读取次日志文件来进行同步操作。根据具体需要,指定任意目录和文件名
binlog-do-db=test #指定同步的数据库,如果不指定,将同步所有数据库数据
另外还可以设置以下选项
binlog_ignore_db=mysql #指定不需要同步的数据库,重复该行可以指定多个数据库。
3. 设置从数据库服务连接主数据库服务的账号
运行下面命令在主服务器中建立从服务器的访问账号
grant replication slave on *.* to 'a4slave'@'%' identified by '123456';
4. 查看主服务器的状态
运行以下命令:
show master status;
将显示类似如下结果:
+-------------------------+------------+--------------------+-------------------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+------------+--------------------+-------------------------+--------------------------+
| test_bin.000001 | 154 | | | |
+-------------------------+------------+--------------------+-------------------------+---------------------------+
显示当前正在使用的日志文件:test_bin.0000001;当前日志位置为154.
二、从服务器配置
1. 编辑my.ini文件
server-id=20 #保证全局唯一
2. 配置主服务器连接
2.1 停止从属线程
运行mysql命令行命令
stop slave;
2.2 设置主服务器
运行mysql命令行命令
change master to master_host='122.194.221.133',master_port=10002,master_user='a4slave',master_password='123456',master_log_file='test_bin.000001',master_log_pos=154;
以上命令中master_host为主服务器IP地址(例子中地址为虚构,如果和某真实地址一致,纯属巧合);master_user为主服务器中配置的用户名,master_password为该用户的密码。master_log_file为主数据库的当前日志文件,master_log_pos为日志文件的位置。
2.3 启动从属线程
运行mysql命令行命令
start slave;
2.4 查看从服务器状态
运行mysql命令行命令
show slave status;
至此,主从同步配置完毕。可以在主服务器的test数据库中进行各种操作,然后观察从数据库的变化。
注:
grant replication slave on test.* to 'a4slave'@'%' identified by '123456';
来限制主从复制只作用于test数据库,但是上面的语句会报错:Incorrect usage of DB GRANT and GLOBAL PRIVILEGES 因为replication slave 的级别是global,所以不能只作用于某一数据库,而是全局。所以只能用命令grant replication slave on *.* to 'a4slave'@'%' identified by 123456'; 可以在my.ini文件中配置 binlog-do-db=test来限制主从复制的数据库为test