主从复制
配置 Replication
配置步骤:
- 首先准备两台干净的虚拟机或服务器
- 在主服务器上,您必须启用二进制日志记录并配置唯一的服务器ID。需要重启服务器 在主服务器上,您必须启用二进制日志记录并配置唯一的服务器ID。需要重启服务器
编辑主服务器的配置文件 /etc/my.cnf,添加如下内容
[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
- 创建日志目录并赋予权限
shell> mkdir /var/log/mysql
shell> chown mysql.mysql /var/log/mysql
- 重启服务
shell> systemctl restart mysqld
- 在主服务器创建一个仅具有复制过程权限的单独帐户,以最大程度地降低对其他帐户的危害。
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'Www.1.com';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
- 在主服务器创建一个仅具有all权限的单独帐户,用于从服务器远程拷贝原有的数据。
mysql> CREATE USER 'tom'@'%' IDENTIFIED BY 'Www.1.com';
mysql> GRANT ALL ON *.* TO 'tom'@'%';
mysql> k
flush privileges;
- 在从服务器上使用刚才的用户进行测试连接
shell> mysql -urepl -p'Www.1.com' -hmaster_ip
shell> mysql -utom -p'Www.1.com' -hmaster_ip
//master_ip为主服务器IP
主服务器中有数据
- 在从服务器中导出主服务器原有的数据
shell> mysqldump -utom -pWww.1.com --all-databases --master-data=1 > dbdump.sql
//master_ip为主服务器IP
- 将主服务器数据恢复到从服务器上
mysql -u账号 -p密码 < dump.sql
//从服务器拥有权限的用户
配置从服务器
- 配置从服务器的 /etc/my.cnf
[mysqld]
server-id=2
- 配置完重启从服务器
shell> systemctl restart mysqld
- 进入从服务器mysql,执行如下操作
mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',
MASTER_USER='repl',
MASTER_PASSWORD='Www.1.com',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=154;
mysql >stare slave;
//在主服务器利用show master status\G查询file和position
- 检查是否成功
show slave status\G
输出结果中应该看到 I/O 线程和 SQL 线程都是 YES, 就表示成功。