当前位置:Gxlcms > 数据库问题 > MySQL主从备份(2)v0.9

MySQL主从备份(2)v0.9

时间:2021-07-01 10:21:17 帮助过:25人阅读

 

基于lvm2的备份:  

前提:数据目录位于逻辑卷,包含了数据文件和事务日志;     

(1) 请求锁定所有表;

       mysql> FLUSH TABLES WITH READ LOCK;                    

(2) 记录二进制文件事件位置;

       mysql> FLUSH LOGS;

       mysql> SHOW MASTER STATUS;                    

       mysql  -e  ‘SHOW MASTER STATUS;‘ >> /PATH/TO/SOME_POS_FILE      

(3) 创建快照卷

       lvcreate  -L # -s -p r - SNAM-NAME /dev/VG-NAME/LV-NAME              

(4) 释放锁

              mysql> UNLOCK TABLES                    

       (5) 挂载快照卷,并执行备份;             

(6) 周期性备份二进制日志;              

Xtrabackup:

MyISAM:温备,不支持增量备份;

InnoDB:热备,增量;             

Usage: [innobackupex [--defaults-file=#] --backup | innobackupex [--defaults-file=#] --prepare] [OPTIONS]

             

完全+binlog(总结):

       备份:innobackupex  --user  --password=  --host=  /PATH/TO/BACKUP_DIR

       准备:innobackupex --apply-log  /PATH/TO/BACKUP_DIR

       恢复:innobackupex --copy-back

              注意:--copy-back需要在mysqld主机本地进行,mysqld服务不能启动;

                     innodb_log_file_size可能要重新设定;                                  

总结:完全+增量+binlog

       备份:完全+增量+增量+...

                  完全+差异

       准备:

              innobackupex --apply-log --redo-only BASEDIR

              innobackupex --apply-log --redo-only BASEDIR  --incremental-dir=INCREMENTAL-DIR

                           

       恢复:

              innobackupex --copy-back BASEDIR                           

       备份单库:

       --databases

                           

       注意:未尽的内容,请参考其它文档;

       总结:

mysqldump+binlog

       lvm2+cp/tar+binlog

       xtrabackup(innodb)+binlog       

 

MySQL Replication:      

       Master/Slave

              Master: write/read

              Slaves: read

             

为什么?

       冗余:promte(提升为主),异地灾备

              人工

       工具程序

负载均衡:转移一部分“读”请求;

支援安全的备份操作:

       ...

             

主/从架构:

       异步复制:

       半同步复制:

       一主多从;

一从一主;

             

一从多主:

       每个主服务器提供不同的数据库;

       配置:

       时间同步;

复制的开始位置:

       从0开始;

       从主服务器备份中恢复到从节点后启动的复制;

主从服务器mysqld程序版本不一致?

                    

主服务器:

       配置文件my.cnf

server_id=#

       log_bin=log-bin

      

       启动服务:

       mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘USERNAME‘@‘HOST‘ IDENTIFIED BY ‘YOUR_PASSWORD‘;

       mysql> FLUSH PRIVILEGES;

                    

       从服务器:

       配置文件my.cnf

       server_id=#

       relay_log=relay-log

                    

       启动服务:

mysql> CHANGE MASTER TO MASTER_HOST=‘HOST‘,MASTER_USER=‘USERNAME‘,MASTER_PASSWORD=‘YOUR_PASSWORD‘,MASTER_LOG_FILE=‘BINLOG‘,MASTER_LOG_POS=#;

 

       mysql> START SLAVE [IO_THREAD|SQL_THREAD];

                    

       mysql> SHOW SLAVE STATUS;

                    

              课外作业:基于SSL的复制的实现;

 

       主主复制:

              互为主从:两个节点各自都要开启binlog和relay log;

                     1、数据不一致;

                     2、自动增长id;

                            定义一个节点使用奇数id

                                   auto_increment_offset=1

                                   auto_increment_increment=2

                            另一个节点使用偶数id

                                   auto_increment_offset=2

                                   auto_increment_increment=2

                                  

              配置:

                     1、server_id必须要使用不同值;

                     2、均启用binlog和relay log;

                     3、存在自动增长id的表,为了使得id不相冲突,需要定义其自动增长方式;

                    

                     服务启动后执行如下两步:

                     4、都授权有复制权限的用户账号;

                     5、各把对方指定为主节点;

                    

       复制时应该注意的问题:

              1、从服务设定为“只读”;

                     在从服务器启动read_only,但仅对非SUPER权限的用户有效;

                    

                     阻止所有用户:

                            mysql> FLUSH TABLES WITH READ LOCK;

                           

              2、尽量确保复制时的事务安全

                     在master节点启用参数:

                            sync_binlog = ON

                           

                            如果用到的是InnoDB存储引擎:

                                   innodb_flush_logs_at_trx_commit=ON

                                   innodb_support_xa=ON

                                  

              3、从服务器意外中止时尽量避免自动启动复制线程

                    

             

              4、从节点:

                     sync_master_info=ON

                    

                     sync_relay_log_info=ON

                    

       半同步复制

              支持多种插件:/usr/lib64/mysql/plugins/

             

              需要安装方可使用:

                     mysql> INSTALL PLUGIN plugin_name SONAME ‘shared_library_name‘;

                    

              半同步复制:

                     semisync_master.so

                     semisync_slave.so

                    

              主节点:

                     INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;

                    

                            MariaDB [mydb]> SHOW GLOBAL VARIABLES LIKE ‘rpl_semi%‘;

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

                            | Variable_name                      | Value |

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

                            | rpl_semi_sync_master_enabled       | OFF   |

                            | rpl_semi_sync_master_timeout

人气教程排行