zoukankan      html  css  js  c++  java
  • MySQL异地备份方案

    第1章 Mysql异地备份方案

    1.1 方案一:主主复制进行热备份

    1.1.1主主复制原理:双机热备就是通过搭建主主复制架构进行互相同步,从而保证两边的数据库一致。

    1.1.2主主复制做异地备份的好处:

    1. 可以实现负载均衡,减少数据库的负担,提供更快的服务;
    2. 可以实现灾备,当一个主库宕了,切到另一个主库进行提供服务;

    1.1.3主主复制的做法:

     1.主主复制原理图

    2.修改两台服务器配置文件

    修改主服务器配置文件,增加如下

    #vi /etc/my.cnf

    [mysqld]

    server-id=1

    log-bin=mysql-bin

    log-slave-updates

    binlog-ignore-db = mysql

    binlog-ignore-db = information_schema

    binlog-ignore-db = performance_schema

    replicate-wild-ignore-table = mysql.%

    replicate-wild-ignore-table = information_schema.%

    replicate-wild-ignore-table = performance_schema.%

    expire_logs_days=5

     

              

    修改从服务器配置文件,增加如下 

    #vi /etc/my.cnf      

    [mysqld]
    server-id=2

    log-bin=mysql-bin

    log-slave-updates

    binlog-ignore-db = mysql

    binlog-ignore-db = information_schema

    binlog-ignore-db = performance_schema

    replicate-wild-ignore-table = mysql.%

    replicate-wild-ignore-table = information_schema.%

    replicate-wild-ignore-table = performance_schema.%

    expire_logs_days=5

                   

     

     

     

     

     

     

     

     

     

     

     

    3. 重启mysql服务(两台都需要重启)

    #systemctl restart mysqld

    4. 配置主主

    (1) [FH-UMP1]mysql 为主库

    FH-UMP1

    #mysql -p(123456)

    mysql> show master status;

     

    FH-UMP2

    #mysql -p(123456)

    mysql> show slave status;

    mysql> stop slave;

    mysql>change master to master_host='192.168.198.149',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;

    mysql> start slave;

    mysql> show slave statusG

     

    详细信息如下:

    mysql> show slave statusG

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

                   Slave_IO_State: Waiting for master to send event

                      Master_Host: 192.168.1.183

                      Master_User: root

                      Master_Port: 3306

                    Connect_Retry: 60

                  Master_Log_File: mysql-bin.000001

              Read_Master_Log_Pos: 154

                   Relay_Log_File: FH-UMP2-relay-bin.000002

                    Relay_Log_Pos: 320

            Relay_Master_Log_File: mysql-bin.000001

                 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: mysql.%,information_schema.%,performance_schema.%

                       Last_Errno: 0

                       Last_Error:

                     Skip_Counter: 0

              Exec_Master_Log_Pos: 154

                  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: 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: 3b9bc7b3-d6a0-11e8-9ee1-000c29a816df

                 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)

    (2) [FH-UMP2]mysql 为主库

    类似的,可以配置FH-UMP2上的mysql为主库

    FH-UMP2

    #mysql -p(123456)

    mysql> show master status;

     

    FH-UMP1

    #mysql -p(123456)

    mysql> show slave status;

    mysql> stop slave;

    mysql> change master to master_host='192.168.1.184',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;

    mysql> start slave;

    mysql> show slave statusG

     

    5. 设置开机自启动(两台都需要)

    #vim /etc/init.d/boot.local添加

    systemctl start mysql.service

    1.2方案二:通过mysqldump备份脚本进行全量备份

    1.2.1脚本思路:先通过mysqldump命令将mysql数据备份到一个文件里,双机做ssh秘钥认证(给出远端的密码即可),通过scp命令将备份文件远程发送给备机。写一个定时任务进行执行MySQL备份脚本。

    1.2.2脚本如下:

    #!/bin/sh  

      

    filename=`date '+%Y%m%d-%H%M%S'`        定义备份文件日期格式(变量)

    filename="${filename}bak.sql"                 备份文件按日期命名(变量)

      

    mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/${filename}     备份命令

      

    scp -P 195 /bak/db/${filename} root@xxx.xxx.xxx.xxx:/bak               远程推送命令

      

    echo "success"  

    sh文件不要忘记使用 chmod +x backup.sh 进行授予可执行权限。

    假设我们将sh文件存放与opt目录下,需要配置一下定时任务

     

    编辑文件:vi /etc/crontab 设定每天凌晨4点执行

    00 04 * * * root /bin/sh /opt/db/backup-database.sh                     备份脚本的定时任务

  • 相关阅读:
    PS教程1000例
    [LeetCode] Ransom Note 赎金条
    Android LinkedList和ArrayList的区别
    Android 一种非常好用的Android屏幕适配
    Android MVC模式和MVP模式的区别
    Android 性能优化的方面方面都在这儿
    Android 高级面试题及答案
    Android的事件分发(dispatchTouchEvent),拦截(onInterceptTouchEvent)与处理(onTouchEvent)
    android studio 3.0 以上 查看sharedpreference
    Android adb命令查看sharedpreferences
  • 原文地址:https://www.cnblogs.com/A121/p/10471876.html
Copyright © 2011-2022 走看看