Mysql高可用(主备部署)

作者: 默直 | 来源:发表于2019-08-27 20:37 被阅读0次

    Mysql高可用(主备部署)


    主从备份的原理:

    主从同步过程中主服务器有一个工作线程I/O dump thread,从服务器有两个工作线程I/O thread和SQL thread。

    1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

    2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

    3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

    4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

    5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

    6.从库如果也要做主库,也要打开log_bin 和log-slave-update参数

    主从部署必要条件:

                                1.主库开启binlog日志(设置log-bin参数)

                                2.主从server-id不同

                                 3.从库服务器能连通主库


    前提:两个服务器数据库版本配置必须一样,初始化一样。防火墙关闭。

    环境:

    master:192.168.100.01 service-id:01

    slave:192.168.100.02 service-id:02

    同步账号:axtu

    同步密码:axtu123

    请先检查防火墙是否关闭,没有关闭的话,请关闭防火墙。

    查看防火墙状态:service iptables status

    关闭防护墙:service iptables stop

    开启防火墙:service iptables start


    主从配置开始:

    一、主:192.168.100.01步骤:

    1.配置同步账号

    mysql>grant replication slave on *.* to 'axtu'@192.168.100.02 identified by 'axtu123';

    mysql>flush privileges;

    mysql>exit;

    2.修改/etc/my.cnf添加

    service-id=01 #主数据库id为1,不能相同

    log-bin=mysql-bin #开启二进制日志,并指定文件目录和文件名前缀

    binlog-format=mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    relay-log=relay-bin #记录中继日志

    relay-log-index=relay-bin-index

    3.重启mysql服务

    service mysqld restart

    4.进入mysql,查看master的状态信息,记录file和position的值,在后面的slave配置中会用到

    mysql>show master status;

    注:File:是当前记录的日志;

            Position:日志中记录的位置;


    二、从:192.168.100.02步骤:

    1.修改/etc/my.cnf添加

    service-id=02 #主数据库id为1,不能相同

    binlog-format=mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    2.启动slave数据库

    service mysqld restart

    3.从服务器开启同步:

    mysql>change master to     

                  master_host='192.168.100.01',  #主服务器IP

                  master_user='axtu',    

                  master_password='axtu123',   

                  master_log_file='mysql-bin.000019',    

                  master_log_pos=2020109;

    启动slave

    mysql>start slave;


    三、检查状态

    1.检查master状态

    mysql>show processlist\G;

    *************************** 1. row ***************************

         Id: 157

       User: sync

       Host:

         db: NULL

    Command: Binlog Dump

      State: Master has sent all binlog to slave; waiting forbinlog to be updated

    看到上面的Command: Binlog Dump说明配置成功!

    2.检查slave状态

    mysql>show slave status \G

    *************************** 2. row ***************************

                   Slave_IO_State: Waiting for master to send event

                      Master_Host: 192.168.0.01

                      Master_User: axtu

                      Master_Port: 3306

                    Connect_Retry: 60

                  Master_Log_File: mysql-bin.000019

              Read_Master_Log_Pos: 2020109

                   Relay_Log_File: mysqld-relay-bin.000004

                    Relay_Log_Pos: 1260

            Relay_Master_Log_File: mysql-bin.000019

                 Slave_IO_Running: Yes

                Slave_SQL_Running: Yes

                  Replicate_Do_DB: 

              Replicate_Ignore_DB: 

    Slave_IO_Running和Slave_SQL_Running两个值为YES基本上成功了

    相关文章

      网友评论

        本文标题:Mysql高可用(主备部署)

        本文链接:https://www.haomeiwen.com/subject/hggisctx.html