-
如果主库已经有数据,为了数据一致性,需要把主库数据复制一份到从数据库,可以使用mysqldump,或者一些管理工具如何Sqlyog进行物理同步
-
修改主库mysql配置文件
[mysqld] server-id = 1 # 唯一的服务ID log_bin = mysql-bin # 开启二进制日志 binlog_do_db = database_name # 需要复制的数据库名,如果要复制所有数据库,可以使用 * binlog_do_db = database_name2 # 也可以指定多个数据库名```
-
配置完成,需要重启mysql
sudo systemctl restart mysqld
-
登录mysql数据库,创建一个复制账户
mysql -u root -p #登录数据库 CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; #replicator 账户名 password密码 GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES; #刷新权限```
-
复制用户创建完,需要在从服务器测试,看是否能请求到主数据库
telnet 192.168.80.129 3306
-
如果请求不到主数据库,需要检查3306端口是否对外开放以及防火墙是否开放,具体操作请查资料,这里不做赘述
-
配置从服务器
[mysqld] server-id = 2 # 唯一的服务ID,与主服务器不同 relay_log = slave-relay-bin # 中继日志文件名,可选配置
-
配置完,需要重启mysql服务
sudo systemctl restart mysqld
-
登录主服务器MySql,执行以下命令获取二进制日志的位置和文件名
SHOW MASTER STATUS;
记录下File和Position的值,例如:mysql-bin.000003和120。
10. 登录从服务器MySql,执行以下命令配置从服务器CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replicator', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000003', # 上一步获取的文件名 MASTER_LOG_POS=120; # 上一步获取的位置值
-
启动复制进程
START SLAVE;
-
检查从服务器复制状态
SHOW SLAVE STATUS\G;
检查看,Slave_IO_Running和Slave_SQL_Running是否都为Yes