实验环境准备:
三台虚拟机,IP分别为master: 192.168.2.1 slave:192.168.2.2 slave1:192.168.2.3
将192.168.2.1的主机做为mysql的主,另外两台做为辅(也可说是从)
第一步:配置好yum ,执行yum install mysql mysql-server -y安装mysql(三台都要装)
第二步:master上编辑mysql的配置文件
1#vim /etc/my.cnf 增加如下几行保存退出
server_id = 1
log-bin=binlog
log-bin-index=binlog.index
第三步:编辑slave上的mysql配置文件
2#vim /etc/my.cnf 增加如下几行保存退出
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
第四步:重启master、slave上的mysqld服务
service mysqld restart
第五步:在master上为slave添加一个用户
mysql> GRANT replication slave ON *.* TO 'zx'@'%' identified by '123';
mysql> flush privileges;
第六步:在slave上
2#cd /var/lib/mysql
2#rm -fr *
2#service mysqld restart
第七步:在master上备份mysql数据并拷贝到slave上
1#mysqldump -A -x > /tmp/full.sql
1#scp /tmp/full.sql [email protected]:/tmp
第八步:在slave上还原数据
mysql < /tmp/full.sql
第九步:查看master数据库的运行状态
master:
mysql> flush tables with read lock;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000003 | 295 | | |
mysql>unlock tables;
第十步:在slave上执行一下命令(注意:master_host指到master的IP,master_user是master中为slave创建的用户,master_log_file是第九步查询出来的File名,master_log_pos是第九步查询出来的Position值)
mysql> change master to master_host='192.168.2.1, master_port=3306, master_user='zx', master_password='123', master_log_file='binlog.000003',master_log_pos=295;
mysql> start slave;
查看slave的运行状态:show slave status \G;
如果下面两个值为YES配置完成
Slave_IO_Running: Yes (主机之间的连通性)
Slave_SQL_Running: Yes(SQL运行状态)
以上完成了ab复制!
如果再填一台主机slave1,做成a-b-b结构,又该怎么做?
其实很简单:安装slave同样的步骤配置slave1,有一个地方需要修改,就是server_id改成3即可!
如果要做成a-b-c结构呢?b是c的主,a是b的主!
其实这个也不难:
1、在slave这台机器的mysql配置文件中添加如下两行
log-bin=binlog
log-slave-updates(开启slave日志更新功能)
2、在slave的mysql数据库中为slave1创建用户
mysql> GRANT replication slave ON *.* TO 'zx1'@'%' identified by '123';
mysql> flush privileges;
3、slave1中配置文件增加为
server_id = 3
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
4、下面操作和主从复制一样!
slave1:
3#cd /var/lib/myslq
3#rm -fr *
3#service mysqld restart
slave:
3#mysqldump -A -x > /tmp/full.sql(备份slave所有数据)
3#scp /tmp/full.sql [email protected]:/tmp(将数据拷贝在slave1)
mysql> flush tables with read lock;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000002 | 169 | | |
slave1:
mysql < /tmp/full.sql(还原数据)
mysql> change master to master_host='192.168.2.2, master_port=3306, master_user='zx1', master_password='123', master_log_file='binlog.000002',master_log_pos=169;
mysql> start slave;
查看slave的运行状态:show slave status \G;
如果下面两个值为YES配置完成
Slave_IO_Running: Yes (主机之间的连通性)
Slave_SQL_Running: Yes(SQL运行状态)
这里已经完成了a-b-c复制!
mysql>unlock tables;
交流群:374506612