2-四种主从搭建流程
异步主从复制搭建过程:准备两台linux,主server,从agent 1、检查mysql配置文件有没有开启binlog[[email?protected] ~]# vim /etc/my.cnf log_bin=server server_id=1 service mysqld restart ls /data -rw-r----- 1 mysql mysql 177 May 1 14:58 server.000001 -rw-r----- 1 mysql mysql 80 May 1 15:02 server.index 手工切换logs文件: mysql>flush logs; 2、主库安装xtrabackup
yum install percona-xtrabackup-test-24-2.4.4-1.el6.x86_64.rpm [[email?protected] xtrabackup2.4.4]# yum localinstall ./*.rpm 新建一个备份目录 mkdir /backup 做一个全备 innobackupex --user=root --password=123 --socket=/tmp/mysql.socket /backup/ innobackupex --user=root --password=123 /backup/ [[email?protected] ~]# cd /backup/ [[email?protected] backup]# ll total 12 drwxr-x--- 2 root root 4096 May 1 15:41 2019-05-01_15-41-35 drwxr-x--- 2 root root 4096 May 1 15:43 2019-05-01_15-43-47 drwxr-x--- 5 root root 4096 May 1 15:50 2019-05-01_15-50-52 将备份内容放到客户机 [[email?protected] 2019-05-01_15-50-52]# scp -r 2019-05-01_15-50-52/ 3、从库配置bin_log[[email?protected] ~]# vim /etc/my.cnf read_only=1 server_id=2 binlog_format=row log_bin=slave 关闭数据库 [[email?protected] ~]# service mysqld stop 进入mysql安装目录 [[email?protected] ~]# cd /var/lib/mysql 将库中全部删掉 [[email?protected] mysql]# rm -rf * 从库安装xtrabackup 4、恢复备份 应用日志 [[email?protected] xtrabackup2.4.4]# innobackupex --apply-log 查看状态 [[email?protected] 2019-05-01_15-50-52]# cd /root/2019-05-01_15-50-52 [[email?protected] 2019-05-01_15-50-52]# cat xtrabackup_checkpoints backup_type = full-prepared from_lsn = 0 to_lsn = 2534580 last_lsn = 2534589 compact = 0 recover_binlog_info = 0 从库恢复 [[email?protected] 2019-05-01_15-50-52]# innobackupex --copy-back [[email?protected] 2019-05-01_15-50-52]# cd /var/lib/mysql 修改属主属组 [[email?protected] mysql]# chown -R mysql:mysql . 查看 [[email?protected] mysql]# cat xtrabackup_info uuid = da8b5a8d-6be5-11e9-9925-000c2967eaf1 name = tool_name = innobackupex tool_command = --user=root --password=... /backup/ tool_version = 2.4.4 ibbackup_version = 2.4.4 server_version = 5.7.17 start_time = 2019-05-01 15:50:52 end_time = 2019-05-01 15:50:56 lock_time = 0 binlog_pos = innodb_from_lsn = 0 innodb_to_lsn = 2534580 partial = N incremental = N format = file compact = N compressed = N encrypted = N 启动数据库 [[email?protected] mysql]# service mysqld start 5、在主库上专门给从库建立一个复制用的用户mysql> grant replication slave,replication client on *.* to ‘repl‘@‘%‘ 6、在从库上登录[[email?protected] mysql]# mysql -urepl -prepl -hserver -P3306 验证一下 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.01 sec) 7、确定主从关系mysql> ? change master to CHANGE MASTER TO MASTER_HOST=‘master2.mycompany.com‘, MASTER_USER=‘replication‘, MASTER_PASSWORD=‘bigs3cret‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘master2-bin.001‘, MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10; [[email?protected] mysql]# mysql -uroot -p123 mysql> CHANGE MASTER TO Query OK,0 rows affected,2 warnings (0.04 sec) 开启从库 mysql> start slave; Query OK,0 rows affected (0.02 sec) 查看线程状态 查看从库上有没有正常生成主从的IO应用线程 mysql> mysql> show processlist; 详细判断主从关系是否正常跑 mysql> show slave statusG 主库上 查看当前服务器上bin_log(server.000002)已经跑到哪一个Position了 mysql> show master status; 主从复制存在的问题主从存在问题: 主库宕机后,数据可能丢失 主从只有一个sql thread,主库写压力大,主从延时大 主库故障,从库需要手工拉起对外提供服务 如何解决: 半同步复制——解决数据丢失问题 并行复制——解决从库复制延迟问题 MHA——解决故障、在线切换问题 半同步复制过程半同步复制检测 检查当前版本是否支持半同步 主从都需要检查 mysql> select @@have_dynamic_loading; 模块目录: /usr/local/mysql/lib/plugin/:semisync_master.so和semisync_slave.so /usr/lib64/mysql/plugin 主库加载模块: INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘; 从库加载模块: INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘; 检查模块加载情况: mysql> select * from mysql.plugin; 开启主库半同步: set global rpl_semi_sync_master_enabled=1; set global rpl_semi_sync_master_timeout=30000; 单位毫秒 从库开启半同步复制: set global rpl_semi_sync_slave_enabled=1; 如果是异步复制转半同步复制: 需要重启下从库上的IO线程: stop slave io_thread;start slave io_thread; 并行复制从库配置文件修改 [[email?protected] plugin]# vim /etc/my.cnf 并行参数: slave_preserve_commit_order=1 slave_parallel_type=logical_clock slave_parallel_workers=4 log_slave_updates=1 relay_log_recovery=ON #master_info_repository=TABLE #relay_log_info_repository=TABLE | mysql | slave_master_info | | mysql | slave_relay_log_info | 重启从库数据库 [[email?protected] plugin]# service mysqld restart GTID主从全局事务ID 优点:不用手工设置日志偏移量,很方便的进行故障转移; MASTER_AUTO_POSITION = {0|1} 缺点:只支持5.6之后的版本 主库配置: [[email?protected] plugin]# vim /etc/my.cnf gtid-mode=on enforce-gtid-consistency=1 重启数据库 从库配置: [[email?protected] plugin]# vim /etc/my.cnf gtid-mode=on enforce-gtid-consistency=1 重启数据库 在主库查看: 可以查看 server_uuid 号:show global variables like "%uuid%"; show master status; Executed_Gtid_Set现在是空的,发现没有gtid记录(如果刚开始开启binlog的话) 创建一张表 create table g1; 再次查看show master status; 可以查看到在 Executed_Gtid_Set 信息 主库备份: innobackupex --user=root --password=123 /backup/ 应用 (gtid模式此处不用看) 查看xtrabackup_binlog_info或者xtrabackup_info: binlog_pos = filename ‘server.000001‘,position ‘186479‘,GTID of the last 然后将 备份文件传输到从库 : scp -r /backup/2018-06-25_06-50-33/ [email?protected]:/backup/ 在从库上进行恢复: innobackupex --move-back /backup/2018-06-25_06-50-33/ 修改权限:chown -R mysql:mysql /mysql/ 启动数据库:service mysqld start 主库创建复制用户 然后从库进行同步 CHANGE TO 操作 CHANGE MASTER TO 启动从库:start slave; show slave status看状态 然后进行测试即可 测试从库操作 测试主库操作同步情况 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |