主要介绍两个场景:
- 生产环境已经有正在运行的数据库。
- 生产环境已经有正常运行的主从数据库,想再添加一台从数据库。
本文说一下第二种情况。
假设线上正在运行的主数据库服务器的地址为192.168.1.2,从数据库服务器地址为192.168.1.3,而你想新添加的从数据库地址为192.168.1.4
- 首先在主数据库上为要添加从服务器地址创建一个用于复制的用户。
$ ssh root@192.168.1.2
$ mysql -u root -p
mysql> grant REPLICATION SLAVE on *.* to 'repl'@'192.168.1.4' identified by 'repl_pass';
mysql> flush privileges;
- 然后再将已有的从服务器的数据目录打包并复制到新添加的从服务器
$ ssh root@192.168.1.3
$ service mysql stop;
$ tar -zcvf mysql.tar.gz /var/lib/mysql
$ scp /var/lib/mysql.tar.gz root@192.168.1.4:~
$ service mysql start;
$ mysql -u root -p
mysql> start slave;
mysql> exit;
- 登录到新要添加的从服务器,将上一步打包的文件解压到/var/lib,然后修改数据库配置,重启数据库,最后再开启复制。
$ ssh root@192.168.1.4
$ cd /var/lib
$ tar -zxvf ~/mysql.tar.gz
$ vim /etc/mysq/mysql.conf.d/mysqld.cnf
#添加 server-id=3 ,不能和主数据库和其它从数据库的server-id重复
$ service mysql restart
$ mysql -u root -p
mysql> show slave status;#查看bin_log正在执行的文件及坐标
mysql> reset slave;
mysql> change master to
-> MASTER_HOST='192.168.1.2',
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='repl_pass',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
mysql> start slave;
- 检查该从数据库的运行状态
show slave status;
网友评论