作为程序员一定要保持良好的睡眠,才能好编程

linux下mysql如何主从服务器设置,不适用5.5版本

发布时间:2016-05-10

今天服务器被黑客攻击了,把服务器数据、mysql数据库全部删除了,找来找去,还是无法从服务器上找回自己的数据。

那黑客要我3BT币。唉,郁闷

为了防止那样的事情下次再发生,故此,在这里做一下服务器的主从。


第一步:

先准备好两台服务器

192.168.61.105  主

192.168.61.107  从


备注:

作为主从服务器的MySQL版本建议使用同一版本!

或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本!


vi /etc/sysconfig/iptables  #编辑

-A  INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  #允许3306端口

特别提示:如果这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面,添加好之后防火墙规则如下所示:

service iptables start;  开启

service iptables stop;  关闭

关闭防火墙服务即可:
查看防火墙信息:
#/etc/init.d/iptables status
关闭防火墙服务:
#/etc/init.d/iptables stop


首先登录 192.168.61.105 这台服务器


进入mysql服务器执行:

grant replication slave on *.* to 'backup'@'192.168.61.107' identified by '123456';

A1.png

第二步:打开 /etc/my.cnf配置文件

这个文件怎么找?

rpm -qa | grep mysql

A2.png

rpm -ql mysql-libs-5.1.73-5.el6_7.1.i686

A3.png


看到 /etc/my.cnf 这个文件,使用 vim /etc/my.cnf


server-id               = 1    #主机标示,整数
log_bin                 = /var/log/mysql/mysql-bin.log   #确保此文件可写
read-only              =0  #主机,读写都可以
binlog-do-db         =test   #需要备份数据,多个写多行
binlog-ignore-db    =mysql #不需要备份的数据库,多个写多行

A4.png


注意: log_bin 这个目录必须是要有写的权限:  /var/log/mysql/mysql-bin.log 这个目录可以自定义去设置,

            看mysql 使用的帐号是mysql  因此我就把 /var/log/mysql 这个目录的组、权限设为mysql所拥有

            chown -R mysql:mysql  /var/log/mysql

            A8.png

            要这的权限即可,能写能读取。


            mysql> show variables like 'server_id';

            +---------------+-------+

            | Variable_name | Value |

            +---------------+-------+

            | server_id     | 1     |

            +---------------+-------+

            1 row in set (0.00 sec)

            show master status;  #查看主服务器,出现以下类似信息

            mysql> show master status;

            +------------------+----------+--------------+------------------+

            | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

            +------------------+----------+--------------+------------------+

            | mysql-bin.000011 |      107 | osyunweidb   | mysql            |

            +------------------+----------+--------------+------------------+

            1 row in set (0.00 sec)



第三步:打开从服务器


server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
master-host     =192.168.61.105
master-user     =backup
master-pass     =123456
master-port     =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-do-db=cimie #要复制这个数据库
replicate-ignore-db=mysql #不复制某个库


A9.png


第四步:重新启动服务器即可

            先重启主服务器 192.168.61.105    重启命令: service mysqld restart;

            


            再次重启从服务器 192.168.61.107  重启命令: service mysqld restart;


第五步:测试是否已经同步

A10.png

看到以上的效果,证明已经同步成功了。






Mysql slave 同步异常解决


需要注意事项:切记不要随意去更改从服务器的数据,这样会造成主从服务器不同步,以后就不会同步了。

                      可以通过 show master status \G;  这样的方法去查看

    A13.png


show slave status \G; 这是在从服务器上的。

a12.png


mysql> change master to master_log_file='mysql-bin.000002',master_log_pos=379


start slave;


show slave status \G;  通过这样来恢复不同步的问题。

            

A14.png

                


只有是上面的这个状态,才能正常同步数据。




hange master to master_host='192.168.21.128',master_user='osyunweidbbak',master_password='123456',master_log_file='mysql-bin.000011' ,master_log_pos=107;    #执行同步语句


详细:http://www.osyunwei.com/archives/7269.html