MySQL++:Liunx - MySQL 主从复制
目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制
环境:虚拟机
主数据库:192.168.211.101
从数据库:192.168.211.102
MySQL 安装可参考:逛一逛
一):主库配置步骤
1、配置主库:授权给从数据库服务器
- mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.211.102' identified by 'root';
- mysql>FLUSH PRIVILEGES;
2、修改主库配置文件,开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效
- [mysqld]
- # 同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
- log-bin=mysql-bin
- # master端的ID号
- server-id=1
- # 要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名
- binlog-do-db=verymemory
- # 要忽略的数据库
- #binlog-ignore-db=mysql
修改完配置后:重启MySQL服务 如果启动失败,通过cat /var/log/mysqld.log | tail -30 查看mysql启动失败的日志,从日志内容寻找解决方案。
3、查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复
- mysql> show master status;
- +------------------+----------+--------------+------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +------------------+----------+--------------+------------------+-------------------+
- | mysql-bin.000004 | 120 | verymemory | | |
- +------------------+----------+--------------+------------------+-------------------+
- 1 row in set (0.00 sec)
主服务器已配置好。
二):从库配置步骤
1、理所当然也是从配置文件着手,在/etc/my.cnf 添加下面配置:
- [mysqld]
- server-id=2
- master-host=192.168.211.101
- master-user=rep1
- master-password=root
- master-port=3306
- replicate-do-db=verymemory
- ......
重启时报错:mysqld: unknown variable ‘master-host=
说明mysql不认识这些变量,原因是mysql5.5+版本主从复制不支持这些变量,需要在从库上用命令来设置:
- CHANGE MASTER TO MASTER_HOST='192.168.211.101',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=120;
注意可能存在的错误:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
------------------------ ERROR START ------------------------
1、如果版本一样,请执行以下操作
- vim /etc/my.cnf
- #添加如下配置
- log-bin=mysql-bin
- server-id=2
2、如果版本不一样,请执行以下操作
原因:从 5.6.25 版本使用 innobackupex 备份,在 5.7.15 版本中应用恢复,ibd系统表需要重建
解决步骤:
1):drop 备份的 ibd表
- #登录数据库
- mysql -uroot -p
- #使用mysql数据库
- use mysql;
- #删除
- drop table slave_master_info;
- drop table slave_relay_log_info;
- drop table slave_worker_info;
- drop table innodb_index_stats;
- drop table innodb_table_stats;
- #重建
- source /app/mysql-5.7.25/share/mysql_system_tables.sql
- #退出mysql
- quit
- #重启mysql
- /etc/init.d/mysqld restart
- 或者service mysqld restart
- 注:这里根据自己的mysql路径进行修改即可
至此,问题解决,登陆数据库,重新 change master to 即可!
--------------- ERROR END -----------------
2、启动slave进程
- mysql> start slave;
- Query OK, 0 rows affected (0.01 sec)
3、查看slave的状态,如果下面两项值为YES,则表示配置正确:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
从库正在等待主库更新数据。。。Waitin for master to send event...
到此为止主库要有操作的话 就会同步到从库。
三):同步主库已有数据到从库 【根据个人情况选择 是否要操作以下步骤】
主库操作:
1、停止主库的数据更新操作
- mysql>flush tables with read lock;
2、新开终端,生成主数据库的备份(导出数据库)
./mysqldump -h127.0.0.1 -uroot -proot verymemory > /opt/mysql/install/backups/verymemory.sql
3、将备份文件传到从库
- scp /opt/mysql/install/backups/verymemory.sql root@192.168.211.102:/opt/mysql/backups
4、主库解锁
- mysql>unlock tables;
从库操作:
1、停止从库slave
- mysql>slave stop;
2、新建数据库cmdb
- mysql> create database verymemory default charset utf8;
3、导入数据
- [root@ops-dev ~]# mysql -uroot -ptest123 verymemory</opt/mysql/install/backups/verymemory.sql
4、查看从库已有该数据库和数据
此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。
更多MySQL主从复制 相关机制将会在下篇文章持续更新...
MySQL++:Liunx - MySQL 主从复制的更多相关文章
- Liunx之MySQL安装与主从复制
MYSQL安装(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ...
- Mysql安装及主从复制配置
1.下载 mysql数据库 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.ta ...
- MySQL数据的主从复制、半同步复制和主主复制详解
一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...
- MySQL数据的主从复制、半同步复制和主主复制详解-转
一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...
- Mysql的ssl主从复制+半同步主从复制
Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...
- Mysql高级之主从复制
原文:Mysql高级之主从复制 主从复制不就是多台服务器嘛!,一个改变另一个也改变啦,内容其实都一样! 原理: 对数据库进行操作会生成一个文件,binlog(二进制文件),从服务器配置relaylog ...
- mysql多实例-主从复制安装
安装环境:Centos6.5 mysql版本:mysql-5.5.32.tar.gz 一:安装前准备: 1.安装一些依赖库 yum install cmake gcc gcc-c++ ncurses- ...
- 003.MySQL高可用主从复制新增slave
一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...
- Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql-l ...
- docker 搭建 MYSQL并且完成主从复制
mysql主从复制逻辑: 1.从库执行start slave 开启主从复制. 2.从库请求连接到主库,并且指定binlog文件以及位置后发出请求. 3.主库收到从库请求后,将信息返回给从库,除了信息日 ...
随机推荐
- 二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组
搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中 ...
- Java同步方法:synchronized到底锁住了谁?
目录 前言 同步方法 类的成员方法 类的静态方法 同步代码块 总结 其他同步方法 参考资料 前言 相信不少同学在上完Java课后,对于线程同步部分的实战,都会感到不知其然. 比如上课做实验的时候,按着 ...
- wait,waitpid的学习使用
man wait man waitpid 从中可知 函数原型 pid_t wait(int* status); pid_t waitpid(pid_t pid, int* status, int op ...
- opencv-5-图像遍历与图像改变
opencv-5-图像遍历与图像改变 opencvc++qt 目录 目录 开始 图像的像素点访问与遍历 opencv 座标定义 下标访问 指针访问 迭代器法访问 遍历访问时间对比 图像操作 图像叠加 ...
- 在java中构建高效的结果缓存
文章目录 使用HashMap 使用ConcurrentHashMap FutureTask 在java中构建高效的结果缓存 缓存是现代应用服务器中非常常用的组件.除了第三方缓存以外,我们通常也需要在j ...
- 理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos
理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos Cheap Paxos Message flow: Cheap Multi-Paxos Fast Paxos ...
- web 之 session
Session? 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程序可以 ...
- vue2.x学习笔记(二十五)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12677019.html. 过滤器 vue允许开发者自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地 ...
- 国际站中国区,孟买上Redis 4.0 集群版
信息摘要: 国际站中国区,孟买上线Redis 4.0 集群版适用客户: 所有用户版本/规格功能: redis 4.0 集群版产品文档: https://www.alibabacloud.com/hel ...
- PHP命令执行学习总结
前言 最近学习了PHP命令执行,内容比较多,把自己学到的总结下来,加深理解,水平有限,欢迎大佬斧正. 什么是PHP命令注入攻击? Command Injection,即命令注入攻击,是指由于Web应用 ...