1. 程式人生 > >centos7 mysql互為主從+keepalived

centos7 mysql互為主從+keepalived

一、互為主從配置

1.1、資源情況

192.168.11.177 server1

192.168.11.180 server2

192.168.11.210 VIP

1.2、server1配置

# vi /etc/my.cnf

[mysqld]

server-id=1

log-bin=mysql-bin

relay_log=mysql-realy-bin

relay_log_index=slave-mysql-realy-bin.index

expire_logs_days=15

binlog_format=mixed

auto-increment-increment=2

auto-increment-offset= 1

innodb_flush_log_at_trx_commit=1

replicate-ignore-db=sys

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

datadir=/data/mysql_data

socket=/var/lib/mysql/mysql.sock

character_set_server=utf8

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

# innodb optimization

innodb_buffer_pool_size=8G

innodb_log_file_size=256M

innodb_flush_method=O_DIRECT

max_connections=500

innodb_autoextend_increment=128

1.3、server2配置

# vi /etc/my.cnf

server-id=2

log-bin=mysql-bin

relay_log=mysql-realy-bin

relay_log_index=slave-realy-bin.index

expire_logs_days=15

binlog_format=mixed

auto-increment-increment=2

auto-increment-offset= 2

innodb_flush_log_at_trx_commit=1

replicate-ignore-db=sys

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

datadir=/data/mysql_data

socket=/var/lib/mysql/mysql.sock

character_set_server=utf8

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

# innodb optimization

innodb_buffer_pool_size=8G

innodb_log_file_size=256M

innodb_flush_method=O_DIRECT

max_connections=500

innodb_autoextend_increment=128

1.4、server1、server2上修改賬戶密碼,建立同步賬戶

# mysql -p

mysql> set password=password('******');

mysql> create user [email protected]'%' identified by '******';

mysql> grant replication slave, replication client on *.* to [email protected]'%';

1.5、server2建立同步

server1的master狀態

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000003 |      882 |              |                  |                   |

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

mysql> CHANGE MASTER TO MASTER_HOST='192.168.11.177', MASTER_USER='repluser', MASTER_PASSWORD='******', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=882;

Query OK, 0 rows affected, 2 warnings (0.10 sec)

mysql> show slave status\G

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

               Slave_IO_State: 

                  Master_Host: 192.168.11.177

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000003

          Read_Master_Log_Pos: 882

               Relay_Log_File: mysql-realy-bin.000001

                Relay_Log_Pos: 4

        Relay_Master_Log_File: mysql-bin.000003

             Slave_IO_Running: No

            Slave_SQL_Running: No

              Replicate_Do_DB: 

          Replicate_Ignore_DB: sys,mysql,information_schema,performance_schema

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 882

              Relay_Log_Space: 154

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 0

                  Master_UUID: 

             Master_Info_File: /data/mysql_data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: 

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

         Replicate_Rewrite_DB: 

                 Channel_Name: 

           Master_TLS_Version: 

1 row in set (0.00 sec)

# vi /data/mysql_data/auto.cnf

[auto]

server-uuid=cbcefb67-9f9a-11e8-91b3-06ba24001d86

server-uuid=cbcefb77-9f9a-11e8-91b3-06ba24001d86

mysql> show slave status\G

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.11.177

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000003

          Read_Master_Log_Pos: 882

               Relay_Log_File: mysql-realy-bin.000003

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000003

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: sys,mysql,information_schema,performance_schema

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 882

              Relay_Log_Space: 527

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 1

                  Master_UUID: cd146946-9f95-11e8-9a29-063696001d83

             Master_Info_File: /data/mysql_data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

         Replicate_Rewrite_DB: 

                 Channel_Name: 

           Master_TLS_Version: 

1 row in set (0.00 sec)

mysql> start slave;

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000003 |      154 |              |                  |                   |

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

1.6、server1建立同步

mysql> CHANGE MASTER TO MASTER_HOST='192.168.11.180', MASTER_USER='repluser', MASTER_PASSWORD='******', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

Query OK, 0 rows affected, 2 warnings (0.22 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.11.180

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000003

          Read_Master_Log_Pos: 154

               Relay_Log_File: mysql-realy-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000003

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: sys,mysql,information_schema,performance_schema

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 154

              Relay_Log_Space: 527

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 2

                  Master_UUID: cbcefb67-9f9a-11e8-91b3-06ba24001d86

             Master_Info_File: /data/mysql_data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

         Replicate_Rewrite_DB: 

                 Channel_Name: 

           Master_TLS_Version: 

1 row in set (0.00 sec)

mysql> create database ceshi_db;

Query OK, 1 row affected (0.01 sec)

mysql> use ceshi_db1;

Database changed

mysql> create table home(id int(10) not null,name char(10));

Query OK, 0 rows affected (0.14 sec)

1.7、server2驗證

mysql> show databases;

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

| Database           |

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

| information_schema |

| ceshi_db           |

| mysql              |

| performance_schema |

| sys                |

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

5 rows in set (0.00 sec)

mysql> use ceshi_db;

Database changed

mysql> show tables;

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

| Tables_in_ceshi_db |

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

| home               |

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

1 row in set (0.00 sec)

mysql> create database ceshi_db1;

Query OK, 1 row affected (0.01 sec)

mysql> create table home(id int(10) not null,name char(10));^C

mysql> use ceshi_db1;

Database changed

mysql> create table home(id int(10) not null,name char(10));

Query OK, 0 rows affected (0.09 sec)

1.8、server1驗證

mysql> show databases;

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

| Database           |

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

| information_schema |

| ceshi_db           |

| ceshi_db1          |

| mysql              |

| performance_schema |

| sys                |

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

6 rows in set (0.00 sec)

mysql> use ceshi_db1;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

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

| Tables_in_ceshi_db1 |

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

| home                |

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

1 row in set (0.00 sec)

二、keepalived配置

2.1、server1配置

# cat /etc/keepalived/keepalived.conf

global_defs {

   smtp_server 127.0.0.1 

   smtp_connect_timeout 30

   router_id mysql-1

}

vrrp_script chk_mysql {

   script "/etc/keepalived/scripts/mysql_check.sh"

   interval 2

   weight -5

   fall 2

   rise 1

}

vrrp_instance VI_1 {

    state MASTER 

    interface eth0

    virtual_router_id 61

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

       track_script {

       chk_mysql

    }

    virtual_ipaddress {

        182.168.11.210

    }

}

2.2、server2配置

# cat /etc/keepalived/keepalived.conf

global_defs {

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id mysql-2

}

vrrp_script chk_mysql {

   script "/etc/keepalived/scripts/mysql_check.sh"

   interval 2

   weight -5

   fall 2

   rise 1

}

vrrp_instance VI_1 {

    state BACKUP 

    interface eth0

    virtual_router_id 61

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

       track_script {

       chk_mysql

    }

    virtual_ipaddress {

        182.168.11.210

    }

}

2.3、指令碼

# cat /etc/keepalived/scripts/mysql_check.sh 

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

if [ "${counter}" -eq 0 ]; then

    service keepalived stop

fi

2.4、不搶佔模式

如果把server1設定為VIP不搶佔模式,做下面修改

server1

# vi /etc/keepalived/keepalived.conf 

新增

nopreempt   

state MASTER

state BACKUP        

#防止切換到從庫後,主keepalived恢復後自動切換回主庫

參考:

https://blog.csdn.net/qq_36276335/article/details/69942101

https://www.cnblogs.com/kevingrace/p/6710136.html

相關推薦

centos7 mysql互為主從+keepalived

一、互為主從配置 1.1、資源情況 192.168.11.177 server1 192.168.11.180 server2 192.168.11.210 VIP 1.2、server1配置 # vi /etc/my.cnf [mysqld] serve

MySQL高可用,MySQL互為主從+keepalived

一:環境:centos7.5 MySQL5.7192.168.3.222 master192.168.3.158 slave192.168.3.223 VIP二:首先做出雙主來以下操作兩臺機器都要做2.1:首先域名解析: ###vim /etc/hosts (兩臺都做) 192.168.3.222 mast

mysql互為主從複製MM+keepalived高可用

mysql雙主MM+keepalived高可用方案 一.安裝單機mysql伺服器 1.資源分配 伺服器名 IP VIP MYSQL版本 Master

KeepAlived+MySQL互為主從

解決Master單點問題,兩臺mysql互為主備,雙向replication。當一master掛了,則將slave切換為master,繼續工作。好,給定兩臺機器 主機A:192.168.1.201 主機B:192.168.1.202 一、互為主從

mysql互為主從的環境,更新一條語句同時提交,為什麽會出現數據不一致?

mysql互為主從的環境 更新一條語句同時提交 為什麽會出現數據不一致? mysql互為主從的環境,更新一條語句同時提交,為什麽會出現數據不一致?m1:begin;update t1 set c2=‘b1‘ where c1=2;commit;m2:begin;update t1 set c2=‘

mysql 互為主從

mysql 互為主從ubuntu 服務器mysql5.9開啟功能分別在主從服務器上編輯mysql配置文件#vim /etc/mysql/mysql.conf.d/mysqld.cnf 增加下面兩行bind-address = 0.0.0.0 #修改為允許任意服務器訪問log-bin=mysqlserver

mysql互為主從配置

一、MYSQL主從備份的原理             mysql支援單向、非同步複製,在複製的過程中,一個為主伺服器,另一個為從伺服器。主伺服器進行的操作sql 操作都會記錄到 bin-log 指定的檔案中,如果沒有指定,一般為mysql-bin.0000XX檔案中。從伺服

實驗:基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從

基於keepalived實現nginx和php-fpm互為主從 基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從 思路:利用兩個VIP,一個定位nginx,一個定位php-fpm步驟:1、準備兩臺基於LNMP架構的服務器(能夠提供正常的web服務)2、在ng

Mysql實現企業級主從復制和互為主從模式架構

mysql 在實現mysql的多種模式前提下,首先先介紹一下mysql是如何工作的。 大概網絡拓撲圖如下: 1、該過程的第一部分就是master記錄二進制日誌。在每個事務更新數據完成之前,master在二進制日誌記錄這些改變。MySQL將事務串行的寫入二進制日誌,在事件寫入二進制日誌完成後,mast

Mysql如何實現雙向互為主從復制?

MySQL數據庫 數據庫管理員 北京MySQL 雙向互為主從步驟:1 兩臺機器添加一個叢機訪問的賬戶賦予 replication slave權限mysql> grant replication slave on *.* to 'rep'@'172.16.1.%'

centOS7 MySQL主從

password file systemctl script ide 配置 for set 二進制日誌 修改 /etc/sysconfig/network-scripts/ifcfg-ens33 的ONBOOT=yes重啟網卡 service network restart

liinux安裝 mysql主從複製 mysql+centos7+主從複製

mariadb其實就是mysql mysql已經被oracle收購,它即將閉源,馬上要開始收費了 因此還想免費試用開源的資料庫mysql,就在centos7上,將mysql分支為mariadb 安裝mariadb,在centos7底下: linux軟體包的格式  mysql.rpm

Linux CentOS7 配置MYSQL資料庫主從

1、在主資料庫裡建立一個同步賬號 每個從資料庫會使用一個MySQL賬號來連線主資料庫,所以我們要在主資料庫裡建立一個賬號,並且該賬號要授予REPLICATION SLAVE 許可權,你可以為每個從資料庫分別建立賬號,當然也可以用同一個!你可以用原來的賬號不一定要新創賬號,但你應該注意,這個賬號和密碼會被明文存

LInux CentOS7 MySql 5.7.23主從複製(主從同步)

一、編輯主伺服器mysql 配置檔案 vim /etc/my.conf server-id=1 #伺服器id (主從必須不一樣) log-bin=mysql-bin #開啟日誌(主機需要開啟),這個mysql-bin也可以自定義,這裡也可以加上路徑作為主機的配

Mysql主從複製的配置(雙機互為主從)

author: selfimpr blog: http://blog.csdn.net/lgg201 mail: [email protected] announce: 轉載請保留出處 目的: 讓兩臺mysql伺服器可以互為主從提供同步服務. 優點: 1.

讓兩臺伺服器的MySQL(5.7)資料同步_主主同步(互為主從關係)

網上找的大部分定義master-host的其實在新的MySQL中已經停用了,於是乎很悲劇的自己探索寫出了這麼一個東西 RedHat版本7.0 MySQL版本 5.7 伺服器名稱為假的!!!伺服器名稱為假的!!!伺服器名稱為假的!!! 重要事情說三遍~ 另外需要注意的是,你同

基於Centos7+docker+Mysql主從主從從模式配置

系統架構 Master節點: 192.168.3.112 Relay節點: 192.168.3.122 Slave節點: 192.168.3.12 基於Docker 執行Mysql 前提: 服務都已經按照好docker,防火牆

MySQL主從切換

mysql 主從切換 在一主多從的環境中,如主庫為M,從庫為S1、S2,當主庫出現故障時,主從切換的詳細步驟如下:1 首先要保證所有從庫已經執行了relay log中的全部更新,用以下語句查看:mysql> show processlist\G直到看到下面的語句,表示全部更新執行完畢。Has re

centos7 mysql數據庫安裝和配置

web 大小 images etc 安裝mysql 安裝 commands 0 rows type 一、系統環境 yum update升級以後的系統版本為 [[email protected]/* */ yl]# cat /etc/redhat-relea

mysql 簡單主從

.cn 虛擬機克隆 sql stop keyword ttr mysqld nlog mysq 主服務器master [[email protected]/* */ ~]# vim /etc/my.cnf [mysqld] log-bin=mysql-bin