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

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

说明:

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

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

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

 

XtraBackup优点 :

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

 

主从复制做用:

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

2.数据安全,作备份恢复sql

3.主从切换作高可用数据库

 

复制模式类型:

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

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

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

 

配置步骤:

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

 

1.主库:

建立负责复制的帐号:工具

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';  
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/spa

全量备份:

$ 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
 
确认数据库是关闭的,而且datadir,目录下为空
$ 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 &
$ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock
mysql> change master to master_host=MASTER_HOST, master_port=3306, 
       master_user='slave_ali',master_password='slave_ali_pass',
       master_log_file='mysql-bin.000135', master_log_pos=262484673;
mysql> show slave status\G
mysql> start slave;
mysql> show slave status\G
相关文章
相关标签/搜索