1、搭建说明
准备工作:主从库已安装mysql软件以及xtracbackup备份工具。具体操作可参见mysql rpm安装文档。

介质 版本
操作系统 Red Hat Enterprise Linux Server release 6.8 (Santiago)
数据库 MySQL-5.6.30
角色 IP
主库 172.16.81.90
从库 172.16.81.76
2、主库操作
2.1 创建复制用户

mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO repl@'172.16.81.76' IDENTIFIED BY 'repl_1234';
mysql> flush privileges;

2.2 开启binlog(若已开启则不需要操作)

# vi /usr/my.cnf
#增加以下内容
[mysqld]
log-bin=mysqlbin
expire_logs_days=7

重启数据库

# service mysql restart

2.3主库备份

创建备份目录
# mkdir /data/backup/
全库备份
# innobackupex --defaults-file=/etc/my.cnf --user=root --password="niwodai#2017" --socket=/var/lib/mysql/mysql.sock /data/backup/ --no-timestamp
单库备份
# innobackupex --user=root --password="niwodai#2017" --socket=/var/lib/mysql/mysql.sock --defaults-file=/usr/my.cnf /data/backup/ --no-timestamp --database=wjf
打包备份,传到从库(临时存放在/tmp目录下)
# cd /data/
# tar -cvzf backup_master.tar.gz backup/
# scp backup_master.tar.gz root@172.16.81.76:/tmp/
2.4 参数配置
# vi /usr/my.cnf

#增加如下内容
[mysqld]
server-id=129
relay-log=mymaster-relay-bin
# binlog-do-db=wjf
# binlog-ignore-db=test
replicate_do_db=wjf
#replicate-ignore-db=test

log-slave-updates=1
replicate-same-server-id=0

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_purge=1
relay_log_recovery=1


server-id 是必须的,而且需唯一。
对于mysql 5.6,更新5张系统表的默认存储引擎为innodb。(changer master时报错才操作)

mysql> ues mysql;
mysql> show tables;
删除表
drop table if exists innodb_index_stats;
drop table if exists innodb_table_stats;
drop table if exists slave_master_info;
drop table if exists slave_relay_log_info;
drop table if exists slave_worker_info;
进入datadir,删除对应文件
cd /var/lib/mysql/mysql

rm innodb_index_stats.ibd
rm innodb_table_stats.ibd
rm slave_master_info.ibd
rm slave_relay_log_info.ibd
rm slave_worker_info.ibd

重建以上表
mysql> use mysql;
mysql> source /usr/share/mysql/mysql_system_tables.sql
mysql> show tables;
确认表是否新建成功。
查看配置 mysql> show master status \G;
3、从库操作
3.1 备份恢复
# mkdir /data/
# mv /tmp/backup_master.tar.gz /data/
# tar -xvzf backup_master.tar.gz
# cd /data/backup/
恢复备份文件至可用状态
# innobackupex --apply-log --user=root --password=niwodai#2017 --port=3606 /data/backup/
停止mysql服务
# service mysql stop
重命名原datadir目录
# mv /data/mysql /data/mysql_bak
恢复数据到datadir
# innobackupex --copy-back --user=root --password=niwodai#2017 /data/backup/
170610 18:25:11 completed OK!
修改恢复后datadir目录权限
# chown -R mysql:mysql /data/mysql/
3.2 参数配置
# vi /etc/my.cnf

#添加如下配置
#add for slave
server-id=230
log-slave-updates=1
replicate-same-server-id=0

log-bin=myslavebin
expire-logs-days=7
relay-log=myslave-relay-bin
replicate_do_db=wjf
#replicate-ignore-db=test

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_purge=1
relay_log_recovery=1

read-only=1
对于mysql 5.6,更新5张系统表的默认存储引擎为innodb。(若表当前引擎为innodb,可以不操作) mysql> ues mysql;
mysql> show tables;
删除表
drop table if exists innodb_index_stats;
drop table if exists innodb_table_stats;
drop table if exists slave_master_info;
drop table if exists slave_relay_log_info;
drop table if exists slave_worker_info;
进入datadir,删除对应文件
cd /var/lib/mysql/mysql

rm innodb_index_stats.ibd
rm innodb_table_stats.ibd
rm slave_master_info.ibd
rm slave_relay_log_info.ibd
rm slave_worker_info.ibd

重建以上表
mysql> use mysql;
mysql> source /usr/share/mysql/mysql_system_tables.sql
mysql> show tables;
确认表是否新建成功。
重启服务器 # service mysql restart
配置change master to 提取MASTER_LOG_FILE、MASTER_LOG_POS参数。
# cd /data/backup/
# more xtrabackup_binlog_info
mysqlbin.000004 211678

配置

mysql> CHANGE MASTER TO MASTER_HOST='172.16.81.90',
MASTER_USER='repl',
MASTER_PASSWORD='repl_1234',
MASTER_LOG_FILE='mysqlbin.000004',
MASTER_LOG_POS=211678;

3.3 启停从库
启动从库
mysql> start slave;
停止从库
mysql> stop slave;
从库状态确认
mysql> show slave status \G;


(额外部分)
从库的IO_thread、sql_thread可以单独启停。命令如下:
mysql> start slave io_thread;
mysql> start slave sql_thread;
4、主从切换
4.1 切换前状态检查
#----主库操作
锁定所有表为只读模式。
mysql> flush tables with read lock;
状态查看
mysql> show processlist;
传输线程显示Master has sent all binlog to slave; waiting for binlog to be updated

#----从库操作
mysql> show processlist;
显示Slave has read all relay log; waiting for the slave I/O thread to update it
4.2 切换
原从库(81.76)操作 #-----原从库(81.76)操作
mysql> stop slave;
mysql> reset master;
mysql> reset slave all;
#-----切换后检查
mysql> show master status\G;
#-----创建复制用户
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO repl@'172.16.81.90' IDENTIFIED BY 'replpwd';
mysql> flush privileges;
#-----注释掉read_only参数
# vi /etc/my.cnf
#read-only=1
#-------重启数据库
# service mysql restart
记录一下两个位置参数,用于主库变从库时的change master to设置。 原主库(81.90)操作 #-------原主库(81.90)操作
mysql> CHANGE MASTER TO MASTER_HOST='172.16.81.76',
MASTER_USER='repl',
MASTER_PASSWORD='replpwd',
MASTER_LOG_FILE='mysqlbin.000001',
MASTER_LOG_POS=638;
#------启动从库
mysql> start slave;
#------查看从库状态
mysql> show slave status;
#------解锁表
mysql> unlock tables;

若需要设置从库只读,还需要修改/usr/my.cnf文件
添加参数后重启。
read-only=1

mysql主从搭建操作的更多相关文章

  1. ### MySQL主从搭建Position

    一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...

  2. mysql 主从搭建步骤

    mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...

  3. SQL Server、MySQL主从搭建,EF Core读写分离代码实现

    一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...

  4. MySQL主从搭建

    主服务器配置 1.编辑配置文件 # 如果不存在,就手动创建一个 vim /etc/my.cnf 在配置文件加入如下值: [mysqld] # 唯一的服务辨识号,数值位于 1 到 2^32-1之间. # ...

  5. 利用mk-table-checksum监测Mysql主从数据一致性操作记录

    前面已经提到了mysql主从环境下数据一致性检查:mysql主从同步(3)-percona-toolkit工具(数据一致性监测.延迟监控)使用梳理今天这里再介绍另一种Mysql数据一致性自动检测工具: ...

  6. MySql主从搭建详细步骤

    环境: linux64位,一台机器两个实例,主库3306端口,从库3307端口 步骤: 一.下载安装 先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,可自行查资料如何下载 二. ...

  7. mysql主从搭建之诡异事件

    今天在搭建主从后出现了主库system账号丢失INSERT权限的情况,记录如下 主库: system账号权限同root权限,并且mysql库已经删除 从库: mysql库存在,无system账号 主从 ...

  8. MariaDB(Mysql)-主从搭建

    卸载过程: 停止服务:systemctl stop mariadb 查询安装包:rpm -qa | grep mariadb 卸载: rpm -e mariadb-server rpm -e mari ...

  9. mysql 主从搭建

    主要搭建步骤如下: 1.打开binlog,设置server_id     打开主库的--log-bin,并设置server_id 2.主库授权                --最好也在从库对主库授权 ...

随机推荐

  1. Java实现 LeetCode 416 分割等和子集

    416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...

  2. Java实现 LeetCode 106 从中序与后序遍历序列构造二叉树

    106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序 ...

  3. 面试三轮我倒在了一道sql题上——sql性能优化

    一.前言 最近小农在找工作,因为今年疫情的特殊原因,导致工作不是特别好找,所以一旦有面试电话,如果可以,都会去试一试,刚好接到一个面试邀请,感觉公司还不错,于是就确定了面试时间,准备了一下就去面试了. ...

  4. 温故知新-Mysql锁&事务&MVCC

    文章目录 锁概述 锁分类 MyISAM 表锁 InnoDB 行锁 事务及其ACID属性 InnoDB 的行锁模式 注意 MVCC InnoDB 中的 MVCC 参考 你的鼓励也是我创作的动力 Post ...

  5. zabbix 监控cpu 温度

    Zabbix监控Linux主机CPU温度   一.客户端 1.客户Linux主机安装Im_sensors [root@localhost ~]# yum install -y lm-sensors-y ...

  6. CentOS8.1安装Docker及Docker-compose

    使用 Docker 仓库进行安装 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库.之后,您可以从仓库安装和更新 Docker. 设置仓库 安装所 ...

  7. 华为海思搞定4K60fps!Vmate掌上云台相机国内首发

    目录 Snoppa Vmate Snoppa Vmate Snoppa Vmate是一款掌上型的高性能4K摄像机,集成了微型机械三轴增稳云台,一体化机身集成可操控式触摸屏,既可以独立使用,也可以无线连 ...

  8. Elasticsearch去重查询/过滤重复数据(聚合)

    带家好,我是马儿,这次来讲一下最近遇到的一个问题 我司某个环境的es中被导入了重复数据,导致查询的时候会出现一些重复数据,所以要我们几个开发想一些解决方案,我们聊了聊,相出了下面一些方案: 1.从源头 ...

  9. 深度学习中环境配置的一些经验总结(conda 常用命令)

    前两个月参加了学校的国创项目,和一个外院的同学组队.课题是基于深度学习的新闻图片中网络暴力元素的检查. 6月末最后一门试考完,正式开始暑假,便有了大把时间搞这个国创项目(反正没有其他事干).两个组凑钱 ...

  10. cc30a_demo-CppPrimer_友元与继承-txwtech友元关系不能继承-要明确授予友元

    //友元可以访问类的private与protected成员//友元关系不能继承-要明确授予友元 #include <iostream>//CppPrimer_友元与继承-txwtech-- ...