MySQL Replication 又叫做AB复制或者主从复制。它主要用于MySQL的时时备份或者读写分离。Replication模式的配置步骤如下:
1. 设置master
(1) 修改配置文件
# vim /etc/my.cf
在[mysqld]部分添加
server-id=1
log-bin=mysql-bin
改完后重启mysqld服务
# service mysqld restart
(2) 设置mysql数据库的root访问密码
# mysqladmin -u root password '123'
# mysql -u root -p 输入密码‘123’登陆mysql
mysql> grant replication slave on *.* to 'test'@'10.0.2.61' identified by '123';
说明:这里的test是为slave端设置的访问master端mysql数据的用户,密码为123,这里的10.0.2.61为slave的ip。
mysql> flush tables with read lock; 锁定数据库,此时不允许更改任何数据
mysql> show master status; 查看状态,这些数据是要记录的,一会要在slave端用到
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000022 | 229 | | |
+------------------+----------+--------------+------------------+
2. 设置slave
# vim /etc/my.cnf 在[mysqld]部分加入
server-id=2 //设置数据库id,可以随便设置,但是不能和Master重复。
# scp -r 10.0.2.62:/var/lib/mysql/库名/* /var/lib/mysql/库名 这里的/var/lib/mysql 是数据库的datadir,不要搞混了。从master把所有数据库文件拷贝到slave,目的是数据的一致,mysql库就不用拷贝了,因为slave上也有一些配置保存在mysql库里。
# service mysqld restart
# mysql -u root -p
mysql> slave stop; 停止slave服务
mysql> change master to
->master_host=‘10.0.2.61’, //主服务器的IP地址
->master_user='test', //同步数据库的用户
->master_password='123', //同步数据库的密码
->master_log_file='mysql-bin.000022', //主服务器二进制日志的文件名(前面要求记住的参数)
-> master_log_pos=229; //日志文件的开始位置(前面要求记住的参数)
注:有时需要指定主mysql的端口号,参数为 master_port=3306
mysql> unlock tables; master上打开锁定的数据库
mysql> slave start; 启动同步数据库的线程
mysql> show slave status\G;查看状态
确认以下两项参数都为yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes