一、基础信息:
1. 主数据库信息:
ip : 192.168.2.120 3306
数据库:housekeeping
用于复制数据库的用户账号 liy668 密码:12345678
2. 从数据库信息:
ip : 192.168.2.110 3306
数据库:housekeeping
用户接收数据的用户账户 root 密码:123456
二、更改配置信息:
【主数据库更改】
修改主服务器的数据库配置文件(E:\xampp\mysql\bin\my.ini),在 [mysqld] 标签的最下面,添加如下代码:
#需要备份的数据库
binlog-do-db=test
#不需要备份的数据库
binlog-ignore-db=housekeeping
#开启二进制日志
log-bin=mysql-bin
#服务器id
server-id=1
保存退出,重启MySQL主服务器。binlog-do-db用于指定需要同步的数据库,binlog-ignore-db指定不需要同步的数据库,如果这两个参数都不设置,则从服务器会复制主服务器的所有数据库。
grant replication slave on *.* to 'liy668 '@'127.0.0.1' identified by '12345678';
查看主服务器的 master 状态:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000019 | 498 | test | mysql | |
+------------------+----------+--------------+------------------+-------------------+
【从数据库更改】
修改从服务器的数据库配置文件(E:\mysql\my.ini),在 [mysqld] 标签的最下面,添加如下代码:
#端口
port = 3307
#服务器id
server_id = 2
#开启二进制日志(从服务器不是必须要开启二进制日志)
log-bin=mysql-bin
保存退出,重启MySQL服务。
连接MySQL从服务器:
mysql -uroot -p -P3307
配置复制的参数:
CHANGE MASTER TO MASTER_HOST='192.168.2.120', MASTER_PORT=3306, MASTER_USER='liy668',
MASTER_PASSWORD='12345678', MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=0;
参数详解:
master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值
master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值
启动从服务器的slave复制功能:
start slave;
查看从服务器的slave状态:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.120
Master_User: liy668
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 120
Relay_Log_File: hp-PC-relay-bin.000004
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。