DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

mysql不停库不锁表在线主从配置:

说明:

10G以下的数据库:使用mysqldump导出数据和备份恢复比较合适,便捷。

100-500G数据库:使用Percona-Xtrabackup备份工具,在线热备,全量、增量、单表备份和还原。

更大数据量:采用分库分表,或使用 LVM 快照来加快备份速度。

 

XtraBackup优势 :

  1. 无需停止数据库进行InnoDB热备
  2. 增量备份MySQL
  3. 流压缩到传输到其它服务器
  4. 能比较容易地创建主从同步
  5. 备份MySQL时不会增大服务器负载

 

主从复制作用:

1.实现读写分离,减轻主库负载

2.数据安全,做备份恢复

3.主从切换做高可用

 

复制模式类型:

基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句,有可能会由于SQL执行上下文环境不同而是数据不一致。

基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从mysql5.0开始支持,能够严格保证数据完全一致,但此时用mysqlbinlog去分析日志就没啥意义。因为任何一条update语句,都会把涉及到的行数据全部set值,所以binlog文件会比较大。

混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

 

配置步骤:

主从版本一致—>主库授权复制帐号—>确保开启binlog及主从server_id唯一—>xtrabackup恢复到从库—>记录xtrabackup_binlog_info中binlog名称及偏移量—>从库change master to —>slave start—>检查两个yes

 

1.主库:

创建负责复制的账号:

  1.  
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';
  2.  
    mysql> FLUSH PRIVILEGES;

赋予备份用户权限:

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

 

假设 MySQL 安装目录在/opt/mysql,my.cnf配置文件/opt/mysql/my.cnf,端口3306,数据目录/opt/mysql_data,sock位于/opt/mysql_data/mysql.sock。备份数据放在/data/backup/mysql/

全量备份:

$ export BKP_PASS="bkppass"
$ innobackupex --defaults-file=/opt/mysql/my.cnf --host=localhost --port=3306 --user=bkpuser --password=${BKP_PASS} /data/backup/mysql

默认会以当天 日期+时间 戳命名备份目录。如2018-09-04_20-00-00

 

2.从库:

全量恢复:

innobackupex --use-memory=16G --apply-log 2018-09-04_20-00-00
 
  1.  
    确认数据库是关闭的,并且datadir,目录下为空
  2.  
    $ innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=16G --copy-back 2018-09-04_20-00-00

 

3.做从库

chown -R mysql.mysql /opt/mysql_data
/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf &
  1.  
    $ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock
  2.  
    mysql> change master to master_host=MASTER_HOST, master_port=3306,
  3.  
    master_user='slave_ali',master_password='slave_ali_pass',
  4.  
    master_log_file='mysql-bin.000135', master_log_pos=262484673;
  1.  
    mysql> show slave status\G
  2.  
    mysql> start slave;
  3.  
    mysql> show slave status\G

 


 

转载于:https://my.oschina.net/u/3866910/blog/1942531

posted on 2021-01-12 20:43  DoubleLi  阅读(435)  评论(0编辑  收藏  举报