mysql不停库不锁表在线主从配置:
说明:
10G以下的数据库:使用mysqldump导出数据和备份恢复比较合适,便捷。
100-500G数据库:使用Percona-Xtrabackup备份工具,在线热备,全量、增量、单表备份和还原。
更大数据量:采用分库分表,或使用 LVM 快照来加快备份速度。
XtraBackup优势 :
- 无需停止数据库进行InnoDB热备
- 增量备份MySQL
- 流压缩到传输到其它服务器
- 能比较容易地创建主从同步
- 备份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.主库:
创建负责复制的账号:
-
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/
。
全量备份:
$ 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
|
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;
转载于:https://my.oschina.net/u/3866910/blog/1942531