mysql主从搭建操作
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主从搭建操作的更多相关文章
- ### MySQL主从搭建Position
一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...
- mysql 主从搭建步骤
mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...
- SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...
- MySQL主从搭建
主服务器配置 1.编辑配置文件 # 如果不存在,就手动创建一个 vim /etc/my.cnf 在配置文件加入如下值: [mysqld] # 唯一的服务辨识号,数值位于 1 到 2^32-1之间. # ...
- 利用mk-table-checksum监测Mysql主从数据一致性操作记录
前面已经提到了mysql主从环境下数据一致性检查:mysql主从同步(3)-percona-toolkit工具(数据一致性监测.延迟监控)使用梳理今天这里再介绍另一种Mysql数据一致性自动检测工具: ...
- MySql主从搭建详细步骤
环境: linux64位,一台机器两个实例,主库3306端口,从库3307端口 步骤: 一.下载安装 先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,可自行查资料如何下载 二. ...
- mysql主从搭建之诡异事件
今天在搭建主从后出现了主库system账号丢失INSERT权限的情况,记录如下 主库: system账号权限同root权限,并且mysql库已经删除 从库: mysql库存在,无system账号 主从 ...
- MariaDB(Mysql)-主从搭建
卸载过程: 停止服务:systemctl stop mariadb 查询安装包:rpm -qa | grep mariadb 卸载: rpm -e mariadb-server rpm -e mari ...
- mysql 主从搭建
主要搭建步骤如下: 1.打开binlog,设置server_id 打开主库的--log-bin,并设置server_id 2.主库授权 --最好也在从库对主库授权 ...
随机推荐
- Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)
551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...
- Java实现 蓝桥杯 算法提高 矩阵相乘
算法提高 矩阵相乘 时间限制:1.0s 内存限制:256.0MB 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也 ...
- Java实现 蓝桥杯VIP 算法提高 林丹大战李宗伟
问题描述 我们用0表示林丹,1表示李宗伟. 输入数据中每行会给出一个0或者1,表示对应选手得1分. 当一方得分达到21分时,只要该方与对方分差超过1分,该方即胜出. 你需要输出最后获胜选手的代号. 输 ...
- Java实现 LeetCode 223 矩形面积
223. 矩形面积 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. Rectangle Area 示例: 输入: -3, 0, 3, 4 ...
- Java实现 蓝桥杯VIP 算法提高 文化之旅
算法提高 文化之旅 时间限制:1.0s 内存限制:128.0MB 问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不 ...
- Java中构造方法的详细介绍
构造方法是一个特殊的方法 它会在实例化对象时自动调用 构造方法的定义 必须同时满足下面的三个条件 方法名与类名相同 方法名前面没有返回值类型的声明 在方法中不能使用return语句返回值 class ...
- centos6 升级python2.6 到 python2.7
由于开发库依赖于python27,而自己安装的centos6.8自带的python是2.6.6. 因为centos的yum依赖于python26因此不打算覆盖26. 步骤如下: 1.官网下载源码压缩包 ...
- @bzoj - 4035@ [HAOI2015]数组游戏
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一个长度为N的数组,甲乙两人在上面进行这样一个游戏: 首先,数 ...
- 解决GITLAB无法启动runsv no running
可以先尝试用 systemctl start gitlab-runsvdir.service 如果冻结不动的话,就需要查看系统服务项了 systemctl -t target 如果系统正常的话,所有任 ...
- 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...