iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql主主架构搭建,删库恢复
  • 528
分享到

mysql主主架构搭建,删库恢复

mysql架构数据库 2023-08-16 18:08:40 528人浏览 独家记忆
摘要

Mysql主主架构搭建,删库恢复 搭建mysql主主架构环境信息安装msql服务mysql1mysql2设置mysql2同步mysql1设置mysql1同步mysql2授权测试用账户 安装配置keepalivedmysql1检

搭建mysql主主架构

环境信息

主机名IP地址服务角色
mysql1192.168.44.188mysql,keepalivedmysql-master,keepalived-master
mysql2192.168.44.190mysql,keepalivedmysql-master,keepalived-backup
192.168.44.100(vip)

安装msql服务

mysql1

[root@mysql1 ~]# tar xf mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar[root@mysql1 ~]# yum -y install *.rpm[root@mysql1 ~]# vim /etc/my.cnf[mysqld]server_id=0001log_bin=mysql-0001[root@mysql1 ~]# systemctl enable mysqld --now#查看初始密码[root@mysql1 ~]# grep password /var/log/mysqld.log | tail -1#使用初始密码登录[root@mysql1 ~]# mysql -uroot -p'AFKMqF?Kd2ul'mysql> alter user root@localhost identified by 'zzz-123-ZZZ';Query OK, 0 rows affected (0.00 sec)mysql> grant replication slave on *.* to repluser@"%" identified by "zzz-123-ZZZ";Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show master status;+-------------------+----------+--------------+------------------+-------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| mysql-0001.000002 |      685 |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

mysql2

[root@mysql2 ~]# tar xf mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar[root@mysql2 ~]# yum -y install *.rpm[root@mysql2 ~]# vim /etc/my.cnf[mysqld]server_id=0002log_bin=mysql-0002[root@mysql2 ~]# systemctl enable mysqld --now#查看初始密码[root@mysql2 ~]# grep password /var/log/mysqld.log | tail -1#使用初始密码登录[root@mysql2 ~]# mysql -uroot -p'(se1aYk;r3:g'mysql> alter user root@localhost identified by 'zzz-123-ZZZ';Query OK, 0 rows affected (0.00 sec)mysql> alter user root@localhost identified by 'zzz-123-ZZZ';Query OK, 0 rows affected (0.00 sec)mysql> grant replication slave on *.* to repluser@"%" identified by "zzz-123-ZZZ";Query OK, 0 rows affected, 1 warning (0.00 sec)

设置mysql2同步mysql1

#配置mysql2为mysql1的从服务器,填写mysql1查询master status,中的file和 Positionmysql> change master to master_host="192.168.44.188",master_user="repluser",master_password="zzz-123-ZZZ",master_log_file="mysql-0001.000002",master_log_pos=685;Query OK, 0 rows affected, 2 warnings (0.18 sec)#配置后查看master信息mysql> show master status;+-------------------+----------+--------------+------------------+-------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| mysql-0002.000002 |      929 |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)#查看同步信息mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.44.188                  Master_User: repluser                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-0001.000002          Read_Master_Log_Pos: 685               Relay_Log_File: mysql2-relay-bin.000002                Relay_Log_Pos: 321        Relay_Master_Log_File: mysql-0001.000002             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:          Replicate_Ignore_DB:           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: 685              Relay_Log_Space: 529              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: 0Master_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: 196aed76-23c3-11ee-970c-000c29919b39             Master_Info_File: /var/lib/mysql/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> exit

设置mysql1同步mysql2

#配置mysql1为mysql2的从服务器,填写mysql1查询master status,中的file和 Positionmysql> change master to master_host="192.168.44.190",master_user="repluser",master_password="zzz-123-ZZZ",master_log_file="mysql-0001.000002",master_log_pos=929;mysql> start slave;Query OK, 0 rows affected (0.00 sec)#查看同步信息mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.44.190                  Master_User: repluser                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-0002.000002          Read_Master_Log_Pos: 929               Relay_Log_File: mysql1-relay-bin.000002                Relay_Log_Pos: 321        Relay_Master_Log_File: mysql-0002.000002             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:          Replicate_Ignore_DB:           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: 929              Relay_Log_Space: 529              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: 0Master_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: 2f686140-23c3-11ee-98f2-000c29fe7242             Master_Info_File: /var/lib/mysql/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运行状态的用户授权mysql> GRANT ALL PRIVILEGES ON *.* TO 'test_user'@'%' IDENTIFIED BY 'zzz-123-ZZZ' WITH GRANT OPTION;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

安装配置keepalived

mysql1

[root@mysql1 ~]# yum -y install keepalived.x86_64[root@mysql1 ~]# vim /etc/keepalived/keepalived.conf

/etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.200.1   smtp_connect_timeout 30   router_id mysql1#集群唯一标识   vrrp_iptables#防火墙放行   vrrp_skip_check_adv_addr   vrrp_strict   vrrp_garp_interval 0   vrrp_gna_interval 0}vrrp_script check_mysql {    script "/usr/local/bin/check_mysql.sh"    # 检测MySQL服务的脚本路径    interval 3                   # 检测频率(单位:秒)#    weight -4                    # 检测失败时扣除的权重 通过脚本停止了keepalived服务,此处不再配置#    fall 2                       # 连续检测失败次数#    rise 2                       # 连续检测成功次数#    user keepalived_scripts #运行脚本的用户,若配置此项,此用户需在系统中创建,不配置时root身份运行}vrrp_instance VI_1 {    state MASTER#节点为master    interface ens33#网卡名    virtual_router_id 51    priority 100#节点权重,越大越重    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.44.100/24#虚拟ip    }    track_script {        check_mysql                # 监测MySQL服务脚本的名称    }}

检查脚本

[root@mysql1 ~]# vim /usr/local/bin/check_mysql.sh

/usr/local/bin/check_mysql.sh

#!/bin/bash# 定义MySQL相关配置MYSQL_USER="test_user"MYSQL_PASS="zzz-123-ZZZ"#也可使用读用户登录mysql#MYSQL_AUTH="/data/usr/shell/my.cnf"MYSQL_HOST="192.168.44.188"MYSQL_PORT="3306"MYSQL_VIP="192.168.44.100"# 检测MySQL状态check_mysql_status() {    # 尝试连接MySQL并执行查询    if ! mysql -h "${MYSQL_HOST}" -P "${MYSQL_PORT}" -u "${MYSQL_USER}" -p"${MYSQL_PASS}" -e "SELECT 1" >/dev/null; then#    if ! mysql "$MYSQL_AUTH" -e "SELECT 1" >/dev/null; then        echo "无法连接到MySQL!"        return 1    fi    # MySQL状态正常    return 0}if check_mysql_status; then   echo "MySQL服务正常"   exit 0else    echo "MySQL服务异常"    # 停止Keepalived服务    systemctl stop keepalived.service    # 释放VIP(虚拟IP),停止keepalived服务后,vip不释放,配置此项,ens33为vip所在网卡名ip address del "${MYSQL_VIP}"/24 dev ens33    exit 1fi
vim /data/usr/shell/my.cnf[client]user=rootpassWord=zzz-123-ZZZhost=localhost
[root@mysql1 ~]# chmod a+x /usr/local/bin/check_mysql.sh[root@mysql1 ~]# systemctl enable keepalived.service --now[root@mysql1 ~]# systemctl status keepalived.service

mysql2

[root@mysql2 ~]# yum -y install keepalived.x86_64[root@mysql2 ~]# vim /etc/keepalived/keepalived.conf

/etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.200.1   smtp_connect_timeout 30   router_id mysql2#集群唯一标识   vrrp_iptables#防火墙放行   vrrp_skip_check_adv_addr   vrrp_strict   vrrp_garp_interval 0   vrrp_gna_interval 0}vrrp_script check_mysql {    script "/usr/local/bin/check_mysql.sh"    # 检测MySQL服务的脚本路径    interval 3                   # 检测频率(单位:秒)#    weight -4                    # 检测失败时扣除的权重 通过脚本停止了keepalived服务,此处不再配置#    fall 2                       # 连续检测失败次数#    rise 2                       # 连续检测成功次数#    user keepalived_scripts #运行脚本的用户,若配置此项,此用户需在系统中创建,不配置时root身份运行}vrrp_instance VI_1 {    state BACKUP#节点为BACKUP    interface ens33#网卡名    virtual_router_id 51    priority 98#节点权重,比master要小    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.44.100/24#虚拟ip    }    track_script {        check_mysql                # 监测MySQL服务脚本的名称    }}

keepalived闹裂问题解决

keepalived 备节点抢占vip,主备同时拥有vip
所有keepalived节点增加配置

vrrp_instance VI_1 {    state MASTER    interface ens33    virtual_router_id 51    # 设置unicast通信的本地IP地址    unicast_src_ip          192.168.44.188            # 设置unicast通信的对端IP地址    unicast_peer {        192.168.44.190    }    priority 100    advert_int 1    .....}
vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 51    # 设置unicast通信的本地IP地址    unicast_src_ip          192.168.44.190            # 设置unicast通信的对端IP地址    unicast_peer {        192.168.44.188    }    priority 100    advert_int 1    .....

重启keepalived服务,解决脑裂

检查脚本

[root@mysql2 ~]# vim /usr/local/bin/check_mysql.sh

/usr/local/bin/check_mysql.sh

#!/bin/bash# 定义MySQL相关配置MYSQL_USER="test_user"MYSQL_PASS="zzz-123-ZZZ"#也可使用读用户登录mysql#MYSQL_AUTH="/data/usr/shell/my.cnf"MYSQL_HOST="192.168.44.190"MYSQL_PORT="3306"MYSQL_VIP="192.168.44.100"# 检测MySQL状态check_mysql_status() {    # 尝试连接MySQL并执行查询    if ! mysql -h "${MYSQL_HOST}" -P "${MYSQL_PORT}" -u "${MYSQL_USER}" -p"${MYSQL_PASS}" -e "SELECT 1" >/dev/null; then#    if ! mysql "$MYSQL_AUTH" -e "SELECT 1" >/dev/null; then        echo "无法连接到MySQL!"        return 1    fi    # MySQL状态正常    return 0}if check_mysql_status; then   echo "MySQL服务正常"   exit 0else    echo "MySQL服务异常"    # 停止Keepalived服务    systemctl stop keepalived.service    # 释放VIP(虚拟IP),停止keepalived服务后,vip不释放,配置此项,ens33为vip所在网卡名ip address del "${MYSQL_VIP}"/24 dev ens33    exit 1fi
vim /data/usr/shell/my.cnf[client]user=rootpassword=zzz-123-ZZZhost=localhost
[root@mysql1 ~]# chmod a+x /usr/local/bin/check_mysql.sh[root@mysql1 ~]# systemctl enable keepalived.service --now[root@mysql1 ~]# systemctl status keepalived.service

备份策略

mysqldump全量备份

#!/bin/bash#全量备份TIME=$(date +%Y-%m-%d)BACKUP_DIR="/mysqldump_back/"mysqldump -u 用户名 -p --master-data=2 --all-databases --result-file=${BACKUP_DIR}back-${TIME}.sql

mysqldump增量备份

#此脚本尚未亲测#!/bin/bash#先手动全量备份,后执行脚本mysqldump -u 用户名 -p --master-data=2 --all-databases --result-file=${BACKUP_DIR}last_backup.sqlTIME=$(date +%Y-%m-%d)BACKUP_DIR="/路径/"LAST_BACKUP="${BACKUP_DIR}last_backup.sql"mysqldump -u 用户名 -p --master-data=2 --databases --result-file=${BACKUP_DIR}back-${TIME}.sql --incremental=snarrsync ${BACKUP_DIR}back-${TIME}.sql ${LAST_BACKUP}

数据库目录全量备份

#/bin/bashrsync -av /var/lib/mysql /mysqlback/var-lib-mysql

删除mysql1数据库目录,恢复数据

删除mysql1的数据库目录

[root@mysql1 ~]# rm -rf /var/lib/mysql

查看keepalived停止,VIP漂移到mysql2

停止mysql1的数据库

[root@mysql1 ~]# systemctl stop mysqld

全备份mysql2的数据

[root@mysql2 ~]# mysqldump -uroot -pzzz-123-ZZZ --all-databases --master-data=2 > /root/20230716allback.sql[root@mysql2 zzz]# grep mysql-0002 /root/20230716allback.sql-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-0002.000002', MASTER_LOG_POS=1493;

备份数据上传mysql1

[root@mysql2 ~]# scp /root/20230716allback.sql 192.168.44.188:/root

mysql1启动数据库服务

[root@mysql1 ~]# systemctl start mysqld#生成初始密码,初始密码登录,改密码#数据库没有生成初始密码[root@mysql1 ~]# grep "password" /var/log/mysqld.log | tail -12023-07-16T07:28:38.032091Z 882 [Note] Access denied for user 'test_user'@'localhost' (using password: YES)#停止mysql服务,删除数据库目录,再次启动数据库[root@mysql1 ~]# systemctl stop mysqld.service[root@mysql1 ~]# rm -rf /var/lib/mysql[root@mysql1 ~]# systemctl start mysqld[root@mysql1 ~]# grep "password" /var/log/mysqld.log | tail -12023-07-16T07:30:43.170590Z 15 [Note] Access denied for user 'test_user'@'localhost' (using password: YES)#依旧没有生成初始密码#重置root密码vim /etc/mysql#增加免密配置skip-grant-tables#重启数据库systemctl restart mysqld#免密登录mysql#修改root密码mysql> update  mysql.user set authentication_string=password("123qqq...A") where user="root" and host="localhost"; #确保修改生效mysql> flush privileges; mysql> exit; 断开连接#注释免密登录vim /etc/mysql#增加免密配置#skip-grant-tables#重启数据库systemctl restart mysqld#使用密码登录[root@mysql1 ~]# mysql -uroot -p123qqq...A#重置密码mysql> alter user root@localhost identified by 'zzz-123-ZZZ';Query OK, 0 rows affected (0.00 sec)mysql> exit
#修改好密码后#登录查看为空库[root@mysql1 ~]# mysql -uroot -pzzz-123-ZZZmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 337Server version: 5.7.39-log MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.01 sec)mysql> exit

导入备份数据

[root@mysql1 ~]# mysql -uroot -pzzz-123-ZZZ < /root/20230716allback.sql#查看数据[root@mysql1 ~]# mysql -uroot -pzzz-123-ZZZmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 631Server version: 5.7.39-log MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                || test1              |+--------------------+5 rows in set (0.00 sec)mysql> use test1;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+-----------------+| Tables_in_test1 |+-----------------+| table1          || table2          |+-----------------+2 rows in set (0.00 sec)#查看授权信息mysql> show grants for repluser;ERROR 1141 (42000): There is no such grant defined for user 'repluser' on host '%'

查看mysql2授权信息

[root@mysql2 zzz]# mysql -uroot -pzzz-123-ZZZ -e "show grants for repluser"mysql: [Warning] Using a password on the command line interface can be insecure.+--------------------------------------------------+| Grants for repluser@%|+--------------------------------------------------+| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' |+--------------------------------------------------+

恢复授权信息

#即授权信息未被恢复#恢复授权信息#全量备份,刷新授权就可以看到同步过来的授权信息FLUSH PRIVILEGES;#可以通过查询mysql.user表的,查看用户信息#刷新授权后,可以通过show grants for 'username';查看到
#下述复制mysql目录的方法暂不使用#上传mysql2数据库目录的mysql目录到mysql1[root@mysql1 ~]# scp -r 192.168.44.190:/var/lib/mysql/mysql /var/lib/mysql/#查看 上传来的mysql目录的属性信息[root@mysql1 ~]# ll var/lib/mysql/mysql[root@mysql1 ~]# chown -R mysql:mysql /var/lib/mysql#mysql1的数据库服务重新加载配置[root@mysql1 ~]# ps -ef | grep mysqlmysql     93344      1  0 15:38 ?        00:00:01 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pidroot     116253   1275  0 15:52 pts/0    00:00:00 grep --color=auto mysql[root@mysql1 ~]#[root@mysql1 ~]##kill -1 或 kill -SIGHUP[root@mysql1 ~]# kill -1 93344
#再次查看授权信息,此时MySQL1的root密码也和mysql2同步[root@mysql1 ~]# mysql -uroot -pzzz-123-ZZZ -e "show grants for repluser"mysql: [Warning] Using a password on the command line interface can be insecure.+--------------------------------------------------+| Grants for repluser@%|+--------------------------------------------------+| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' |+--------------------------------------------------+

设置mysql1同步mysql2

设置mysql1同步mysql2的数据,使用备份数据里的binlog数据

[root@mysql2 zzz]# grep mysql-0002 /root/20230716allback.sql-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-0002.000002', MASTER_LOG_POS=1493;
[root@mysql1 ~]# mysql -uroot -pzzz-123-ZZZmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 2388Server version: 5.7.39-log MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> change master to master_host="192.168.44.190",master_user="repluser",master_password="zzz-123-ZZZ",master_log_file="mysql-0002.000002",master_log_pos=1493;Query OK, 0 rows affected, 2 warnings (0.00 sec)mysql>mysql>mysql> start slave;Query OK, 0 rows affected (0.00 sec)mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.44.187                  Master_User: repluser                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-0002.000003          Read_Master_Log_Pos: 154               Relay_Log_File: mysql1-relay-bin.000003                Relay_Log_Pos: 369        Relay_Master_Log_File: mysql-0002.000003             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:          Replicate_Ignore_DB:           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: 744              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: 0Master_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: 88729250-22fc-11ee-af60-000c29fe7242             Master_Info_File: /var/lib/mysql/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)

设置mysql2同步mysql1的数据

#查看mysql1的master信息mysql> show master status;+-------------------+----------+--------------+------------------+-------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| mysql-0001.000004 |   549254 |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
#配置mysql2同步mysql1的数据mysql> stop slave;Query OK, 0 rows affected (0.00 sec)mysql>mysql> RESET SLAVE ALL;Query OK, 0 rows affected (0.00 sec)mysql> change master to master_host="192.168.44.186",master_user="repluser",master_password="zzz-123-ZZZ",master_log_file="mysql-0001.000004",master_log_pos=549254;Query OK, 0 rows affected, 2 warnings (0.01 sec)mysql> start slave;Query OK, 0 rows affected (0.00 sec)mysql>mysql>mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.44.186                  Master_User: repluser                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-0001.000004          Read_Master_Log_Pos: 707915               Relay_Log_File: mysql2-relay-bin.000002                Relay_Log_Pos: 158982        Relay_Master_Log_File: mysql-0001.000004             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:          Replicate_Ignore_DB:           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: 707915              Relay_Log_Space: 159190              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: 0Master_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: 0f1f81d7-23b1-11ee-b1e8-000c29919b39             Master_Info_File: /var/lib/mysql/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)

数据恢复完成,主主同步恢复

启动mysql1上的keepalived

[root@mysql1 ~]# systemctl start keepalived.service#此时vip会回到mysql1 

测试用库表

期间创建test库,和表table1,表table2测试数据

CREATE DATABASE test CHARACTER SET utf8;CREATE TABLE table1 (  id INT AUTO_INCREMENT PRIMARY KEY,  home VARCHAR(255),  love VARCHAR(255),  age INT);CREATE TABLE table2 (  id INT ,  home VARCHAR(255),  love VARCHAR(255),  age INT);

创建两个脚本测试插入随机数据

#!/bin/bashvip_my="192.168.44.100"while truedo    # 生成一个随机数作为 age 字段的值    age=$(shuf -i 1-100 -n 1)    # 生成一个随机字符串作为 home 和 love 字段的值,长度为 10    home=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)    love=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)    # 检查是否已经存在相同的 home 和 love 值    result=$(mysql -h ${vip_my} -u test_user -pzzz-123-ZZZ -e "SELECT COUNT(*) FROM test.table1 WHERE home='$home' AND love='$love';" -s)    # 如果不存在相同的值,则插入新的记录    if [ "$result" -eq 0 ]; then        mysql -h${vip_my} -u test_user -pzzz-123-ZZZ -e "INSERT INTO test.table1 (home, love, age) VALUES ('$home', '$love', $age);"    fi    sleep 1  # 暂停 1 秒done
#!/bin/bashvip_my="192.168.44.100"while truedo    # 生成一个随机数作为 id 字段的值,因为table2的id未设置自增长    id=$(shuf -i 1-100000 -n 1)    # 生成一个随机字符串作为 home 和 love 字段的值,长度为 10    home=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)    love=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)    # 生成一个随机数作为 age 字段的值    age=$(shuf -i 1-100 -n 1)    # 插入数据到 table2 表    mysql -h${vip_my} -u test_user -pzzz-123-ZZZ -e "INSERT INTO test.table2 (id, home, love, age) VALUES ($id, '$home', '$love', $age);"    sleep 1  # 暂停 1 秒done

来源地址:https://blog.csdn.net/qq_44659804/article/details/131756033

您可能感兴趣的文档:

--结束END--

本文标题: mysql主主架构搭建,删库恢复

本文链接: https://www.lsjlt.com/news/371837.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql主主架构搭建,删库恢复
    mysql主主架构搭建,删库恢复 搭建mysql主主架构环境信息安装msql服务mysql1mysql2设置mysql2同步mysql1设置mysql1同步mysql2授权测试用账户 安装配置keepalivedmysql1检...
    99+
    2023-08-16
    mysql 架构 数据库
  • MySQL如何快速搭建主从复制架构
    本篇内容主要讲解“MySQL如何快速搭建主从复制架构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL如何快速搭建主从复制架构”吧!1. 主从复制与读写分...
    99+
    2024-04-02
  • MYSQL主主复制的搭建过程
    本篇内容主要讲解“MYSQL主主复制的搭建过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL主主复制的搭建过程”吧!一、环境说明:IP主机名数据库名连...
    99+
    2024-04-02
  • Mysql中怎么配置主主复制架构
    这期内容当中小编将会给大家带来有关Mysql中怎么配置主主复制架构,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 MySQL主主复制结构区别于主从复制结构。在主主复制结...
    99+
    2024-04-02
  • Docker搭建Mysql主从复制
    Docker搭建Mysql主从复制 前言 相信我,看完这一篇,mysql主从复制能遇到的错误在我这里都遇到了,docker能遇到的错误在我这里也遇到了,包括centos的错误,看吧,都是成长 do...
    99+
    2023-09-24
    docker mysql 容器 Linux
  • Mysql主从数据库搭建(一主两从)
    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任...
    99+
    2023-08-31
    数据库 mysql 服务器
  • Mysql主从复制搭建过程
    这篇文章主要讲解了“Mysql主从复制搭建过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql主从复制搭建过程”吧! 一、相关概念mysql主从复...
    99+
    2024-04-02
  • 如何搭建mysql主从复制
    搭建mysql主从复制的方法在主从服务器开启时间同步[root@storage  ~]# ntpdate 172.18.0.1主数据库配置使用记事本打开主数据库的my.cnf配置文件,在文件中的[my...
    99+
    2024-04-02
  • mysql主从复制怎么搭建
    要搭建MySQL主从复制,需要按照以下步骤进行操作: 确保主服务器和从服务器上都已安装MySQL。 在主服务器上修改配置文件...
    99+
    2024-04-09
    mysql
  • MySql主备搭建
    1. 准备两台安装好了mysql的服务器 128.196.110.107(主) 128.196.111.128(备) 2. 登录主数据库服务器 - 利用xshell等工具,连接上主数据库存在的服...
    99+
    2023-09-27
    mysql
  • MySQL 5.5 主主复制搭建过程是怎样的
    MySQL 5.5 主主复制搭建过程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 --节点1 IP 19...
    99+
    2024-04-02
  • git主仓库搭建
    随着互联网技术的迅速发展,现在软件开发过程中应用版本控制系统已经成为最基本的要求之一。在众多的版本控制系统中,Git已经成为了最流行的一个。在日常的软件开发过程中,我们都离不开Git进行代码管理。而Git的主仓库也是我们必须了解和掌握的一项...
    99+
    2023-10-22
  • mysql主主和主从的搭建方法
    这篇文章主要介绍“mysql主主和主从的搭建方法”,在日常操作中,相信很多人在mysql主主和主从的搭建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql主主和主从...
    99+
    2024-04-02
  • Mysql搭建主从复制的方法
    本篇内容主要讲解“Mysql搭建主从复制的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql搭建主从复制的方法”吧!主库:192.168.1.1 从库...
    99+
    2024-04-02
  • MYSQL主从复制的搭建方式
    本篇内容主要讲解“MYSQL主从复制的搭建方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL主从复制的搭建方式”吧!前言:MYSQL的主从复制的原理跟...
    99+
    2024-04-02
  • 实现↝Mysql数据库主从复制搭建与同步
    实现↝Mysql数据库主从复制搭建与同步 🔻 一、mysql 同步复制有关概述⛳ 前言、何为主从复制⛳ 1.1 mysql支持的复制方式⛳ 1.2 mysql支持的复制类型1....
    99+
    2023-09-17
    数据库 mysql msyql主从复制 linux 运维 服务器 centos
  • MySQL 5.7 基于GTID搭建主从复制
    MySQL 5.7 基于GTID搭建主从复制    一、搭建过程 1.1 准备三个MySQL实例 mysqld --initialize-insecure --use...
    99+
    2024-04-02
  • mysql删除库怎么恢复
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • MySQL数据库误删恢复
    前言        经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定...
    99+
    2023-09-02
    数据库 sql
  • mysql主备怎么搭建
    mysql主备搭建的步骤:主备两台服务器安装相同版本的数据库,数据库的初始数据保持一致。(主库)配置同步账号,如:(1)创建数据库复制用户:mysql>CREATE USER 'repl'@'...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作