发表了几次了,排版老是有问题,看来在linux上的文档格式和window上的出入还蛮大的,花了不少时间重新整理了一下(上一篇就弄的很顺利啊,看来从linux文档上往window上弄还得注意注意)
紧接着上一篇的mysql,这篇主要也是记录下我的学习过程
关于mysql的AB复制问题--------对实现mysql冗灾,备份,恢复,负载均衡有极大的帮助
(这半年学了不少东西了,还要很多要写呀。。。)
MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。
实验环境
master 192.168.0.186
stave1 192.168.0.194
stave2 192.168.0.204
。。。。。。这里是无限延伸的
注:mysql的版本问题,master的版本一定要比stave的版本低,最好是一样的,避免在后面的同步上出现问题
yum install mysql-server -y
开始配置master的mysql文件
vim /etc/my.cnf [mysqld] log-bin=mysql-bin #启动二进制日志系统 binlog-do-db=test #二进制需要同步的数据库名,如果需要同步多个库,例如要再同步 joe 库,再添加一行“binlog-do-db=joe”,以此类推 server-id=1 #必须为 1 到 232�C1 之间的一个正整数值 binlog-ignore-db=mysql #禁止同步 mysql 数据库
重启mysql
/etc/init.d/mysqld restart
进入mysql中创建用户并授权
grant replication slave,reload,super on *.* redhat@'192.168.0.194'identified by 'joe'; flush privilege;更新库
show master status;
记录file和position的值
2.配置从服务器B的文件
yum install mysql-server -y
配置/etc/my.cnf文件 server-id=2
/etc/init.d/mysqld start
进入mysql
change master to master_host ='192.168.0.196',master_user='redhat',master_password='joe',master_log_file='mysql-bin.000001(master status可以查看到)',master_log_pos=106;(master status可以查看)
mysql> slave start
在同步前一定要打开slave,避免底层数据的不同步
如果出现不同步现象及时采取措施
mysql> FLUSH TABLES WITH READ LOCK;#锁表 mysql> mysqldump --all-databases --lock-all-tables > backup.db mysql> UNLOCK TABLES;#表解锁
对master上数据进行备份,并把要同步的数据及时同步到slave上,才能继续完成之后的复制
mysql>show slave status/G; Slave_IO_Running: Yes Slave_SQL_Running: Yes
配置slave2
1.首先要完成slave1变成master-------来为slave同步数据
2.
1.vi /etc/my.cnf server-id=2 log-bin=mysql-bin binlog-ignore-db=mysql binlog-do-db=test log-slave-updates
3.
/etc/init.d/mysqld restart
在slave1上给slave2授权
grant replication slave,reload,super on *.* redhat@'192.168.0.194'identified by 'joe'; flush privilege;更新库
Flush privileges;
show master status
配置slave2-----(首先确保slave2的数据和前两个的数据同步
vim /etc/my.cnf [mysqld] server-id =3
/etc/init.d/mysqld start
进入mysql中,完成设置
change master to master_host='192.168.0.194',master_user='redhat',master_password='westos',master_log_file='mysql-bin.000001(master status可以查看到)',master_log_pos=106;(master status可以查看)
slave start; show slave status/G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes。。。。。。。。。。这两条保证同步成功