Mysql高可用(主备部署)

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高可用(主备部署))