生产环境中mysql数据库由主从关系切换为主主关系
发布日期:2021-05-09 09:26:08 浏览次数:19 分类:博客文章

本文共 11741 字,大约阅读时间需要 39 分钟。

������

������������������������������������������������

1.1���������������������������������������������

������������salve

mysql> stop salve;

���������������������������������������IO���������SQL������������������

mysql> show slave status\G;......             Slave_IO_Running: NO            Slave_SQL_Running: NO......

1.2���������������������������������

������������������tsc���������

mysql> drop database tsc;

������������������tsc���������

mysql> create database tsc;

������������������������������������������

2.1������������������������������

������������������������������������������������������������������

[root@mysql-2 ~]# mysqldump -umaster -pSenseTime#2020 -h 192.168.116.128 --single-transaction tsc > /root/tsc.sql;

���������������������������tsc.sql���������������,������������������������

[root@mysql-2 ~]# ll /root/tsc.sql -h

2.2������������������tsc.sql������������������������

������������������tsc���������

mysql> show databases;

������tsc���������

mysql> use tsc;

������������������������������������

mysql> source /root/tsc.sql;

������������������������������tsc������������������������

mysql> show tables;

������������������������������������

mysql> select count(*) from tb_fever_treatment;+----------+| count(*) |+----------+|    50056 |+----------+1 row in set (0.01 sec)

������������������������

3.1���������������������������������������������

������������mysql������������

[root@mysql-1 ~]# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidlog_bin=master-binbinlog_format=MIXEDserver_id=1gtid-mode=onenforce-gtid-consistencyskip-name-resolveskip-host-cache#������������������������������������auto-increment-offset=2auto-increment-increment=2relay_log=mysql-relay-binlog-slave-updates=on

������������mysql������������

[root@mysql-2 ~]# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidlog_bin=master-binbinlog_format=MIXEDserver_id=2gtid-mode=onenforce-gtid-consistencyskip-name-resolveskip-host-cache#������������������������������������auto-increment-offset=2auto-increment-increment=2relay_log=mysql-relay-binlog-slave-updates=on

������������������������������

[root@mysql-1 ~]# systemctl restart mysqld[root@mysql-1 ~]# systemctl status mysqld

������������������������������

[root@mysql-2 ~]# systemctl restart mysqld[root@mysql-2 ~]# systemctl status mysqld

3.2������������������������������

���mysql-1���������mysql2������������������������

������mysql-1���master������������������file���position������

mysql> show master status\G;*************************** 1. row ***************************             File: master-bin.000522         Position: 438     Binlog_Do_DB:  Binlog_Ignore_DB: Executed_Gtid_Set: 37f084e8-9161-11eb-abf6-000c29f882cb:12-13,87366c38-9164-11eb-988a-000c293c71e0:1-14,87366c38-9164-11eb-988a-000c293c71e1:1-101 row in set (0.00 sec)

���mysql-2���������������������

mysql> change master to master_host='192.168.116.128',master_port=3306,master_user='master',master_password='SenseTime#2020',master_log_file='master-bin.000522',master_log_pos=438;

���mysql-2���������������������

mysql> start slave;

���mysql-2���������������������������IO���������SQL������������������������������������������

mysql> show slave status\G;......             Slave_IO_Running: Yes            Slave_SQL_Running: Yes......
���mysql-2���������mysql-1������������������������

������mysql-2���master������������������file���position������

mysql> show master status\G;*************************** 1. row ***************************             File: master-bin.002054         Position: 1948     Binlog_Do_DB:  Binlog_Ignore_DB: Executed_Gtid_Set: 37f084e8-9161-11eb-abf6-000c29f882cb:12-13,87366c38-9164-11eb-988a-000c293c71e0:1-13,87366c38-9164-11eb-988a-000c293c71e1:1-101 row in set (0.00 sec)

���mysql-1���������������������

mysql> change master to master_host='192.168.116.129',master_port=3306,master_user='master',master_password='SenseTime#2020',master_log_file='master-bin.002054',master_log_pos=1948;

���mysql-1���������������������

mysql> start slave;

���mysql-1���������������������������IO���������SQL������������������������������������������

mysql> show slave status\G;

3.3���������������������������������������

������������������������������������������������������mysql-1���������������������������������user������������������

���mysql-1���������:

mysql> stop slave;

���mysql-2���������:

mysql> stop slave;

������������keepalived���������������������������������VIP

4.1���������mysql-1 keepalived���������������������

[root@mysql-1 ~]# vi /etc/keepalived/keepalived.conf ! configuration File for keepalivedglobal_defs {    router_id master}vrrp_script check_mysql {    script "/etc/keepalived/check_mysql_second.sh"    interval 2}vrrp_instance VI_1 {    state MASTER    interface ens33    virtual_router_id 51    priority 150    advert_int 1    nopreempt    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.116.150    }    track_script {        check_mysql    }}

������mysql-1���mysqld���������������������������������

[root@mysql-1 ~]# vi /etc/keepalived/check_mysql_second.sh#!/bin/bashcounter=$(ss -antlp | grep 3306 | wc -l)if [ "${counter}" -eq 0 ]; then    /usr/bin/systemctl stop keepalived.servicefi[root@mysql-1 ~]# chmod 755 /etc/keepalived/check_mysql_second.sh

4.2���������mysql-2��� keepalived���������������������

[root@mysql-2 ~]# vi /etc/keepalived/keepalived.conf! configuration File for keepalivedglobal_defs {    router_id master}vrrp_script check_mysql {    script "/etc/keepalived/check_mysql_second.sh"    interval 2}vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 51    priority 50    advert_int 1    nopreempt    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.116.150    }    track_script {        check_mysql    }}

������mysql-2���mysqld���������������������������������

[root@mysql-2 ~]# vi /etc/keepalived/check_mysql.sh#!/bin/bashcounter=$(ss -antlp | grep 3306 | wc -l)if [ "${counter}" -eq 0 ]; then    /usr/bin/systemctl stop keepalived.servicefi[root@mysql-1 ~]# chmod 755 /etc/keepalived/check_mysql_second.sh

4.3������������mysql-1���mysql-2���������keepalived������

���mysql-1���������keepalived���������������������

[root@mysql-1 ~]# systemctl start keepalived[root@mysql-1 ~]# systemctl status keepalived

���mysql-2���������keepalived���������������������

[root@mysql-2 ~]# systemctl start keepalived[root@mysql-2 ~]# systemctl status keepalived

4.4���������mysql-1���mysql-2���VIP������������

���������������VIP������������mysql-1���������mysql-1���mysql������������VIP������mysql-2������������mysql-1���������������������VIP���

������mysql-1���VIP������������

[root@mysql-1 ~]# ip address

������mysql-2���VIP������������

[root@mysql-2 ~]# ip address

4.5������������������������������������IP���������VIP

������������������mysql���������������������������������������mysql-1���IP���������������192.168.116.128���������VIP���������������192.168.116.150������

���������������������������������������������������������������

5.1������������������������

���������������������������������������������client������mysql������������������mysql���������������������������mysql���������������������������������������client���������������������������������

������mysql client������������mysql���������������������������������������������user���

���user���������������������VIP������������mysql���������

[root@user ~]# mysql -umaster -pSenseTime#2020 -h 192.168.116.150mysql> select UUID();+--------------------------------------+| UUID()                               |+--------------------------------------+| 8aa2591c-94ef-11eb-93de-000c29309533 |+--------------------------------------+1 row in set (0.01 sec)

���mysql-1���������mysqld������,���������IP���������mysql-1���������������VIP

[root@mysql-1 ~]# systemctl stop mysqld[root@mysql-1 ~]# ip address

������mysql-1������mysqld���������������������������user������������������������������������mysql���������������UUID���������UUID���������������������keepalived���������VIP���mysql-1���mysql-2���������������������

mysql> select UUID();+--------------------------------------+| UUID()                               |+--------------------------------------+| f78cfe1b-94ef-11eb-9622-000c293c71e0 |+--------------------------------------+1 row in set (0.02 sec)

������mysql-1������mysqld������������������VIP���������mysql-2���������������VIP���������������������

5.2������������������������

������������������������mysql client���������������������������������������������������������������������������������������������������������

���mysql-1���������������������������������������������

mysql> INSERT INTO tb_fever_treatment(`id`,`temp`,`device_id`) VALUES(123293,35.3,'123213213213');Query OK, 1 row affected (0.00 sec)

���mysql-2���������������������������������������

mysql> select id,temp,device_id from tb_fever_treatment where id=123293;+--------+------+--------------+| id     | temp | device_id    |+--------+------+--------------+| 123293 | 35.3 | 123213213213 |+--------+------+--------------+1 row in set (0.00 sec)

5.3������������������������

������������������������mysql���������������������������mysql-2���������������������������������mysql-1���������������

���mysql-1���������������������������

mysql> use tsc;select count(*) from tb_fever_treatment;Database changed+----------+| count(*) |+----------+|    50056 |+----------+1 row in set (0.04 sec)

���mysql-2������������������������:

mysql> use tsc;select count(*) from tb_fever_treatment;Database changed+----------+| count(*) |+----------+|    50053 |+----------+1 row in set (0.03 sec)

������mysql-2���������������mysql-1���������������mysql-2���������������mysql-1������������������������������

���������������������������������������������������������������mysql-1���������������������������������������������������������������������������--single-transaction������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

6.1���������������������������

  • mysqld������������������������
  • ���������������������������������������������������������/root/mysqlDump/databaseDump.sql���

6.2������������������������

mysql���������������������������������������������������������������������������������������������������������������

���������������:

mysql> create database tsc;

������������������������:

mysql> use tsc;mysql> source /root/mysqlDump/databaseDump.sql;

������������������������������������������������������������������

mysql> use tsc;select count(*) from tb_fever_treatment;Database changed+----------+| count(*) |+----------+|    50053 |+----------+1 row in set (0.03 sec)

6.3������������������������������������

���������������mysql���������������������������������user���������������������mysql������������������

[root@user ~]# mysql -umaster -pSenseTime#2020 -h192.168.116.150 --execute='use tsc;select count(*) from tb_fever_treatment';mysql: [Warning] Using a password on the command line interface can be insecure.+----------+| count(*) |+----------+|    50053 |+----------+

������������������������������������������������������������������������������������������������

上一篇:github无法访问问题解决方法
下一篇:使用codis-admin搭建codis集群

发表评论

最新留言

不错!
[***.144.177.141]2025年04月01日 09时10分31秒