MySQL主从复制部署
前言
MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能。在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名、日志文件名、文件位置等参数。整个过程可分为如下几个步骤:
(1) 主服务器:开启二进制日志功能,设置服务器ID,并重启MySQL服务;
(2) 在所有从服务器上设置服务器ID(唯一);
(3) 在主服务器上为不同的从服务器创建可读取主服务器日志文件的账户,或使用统一账户;
一、系统规划
1、主服务器
操作系统版本: RHEL 6.6 x64
数据库版本: MySQL 5.6
主机IP:192.168.152.129
主机名:master
数据库名称:
ID编号:1
2、从服务器
操作系统版本:RHEL 6.6 x64
数据库版本:MySQL 5.6(必须保证MySQL版本一致)
主机IP:192.168.152.128
主机名:slave
数据库名称:
ID编号:2
注:本文为个人学习之用,使用虚拟机模拟,可作为实施参考。
二、安装准备
1、存储
需要根据实际情况,为源数和目标端数据库分配足够的可用空间
2、网络
需要开通源端和目标端服务器的any-any的网络端口互通性
3、NTP
需要同步源和目标主机时钟同步机制,若为内网环境,推荐配置内网时钟服务器
4、其他
配置静态IP、主机名、IP与主机名绑定、防火墙(开启端口或关闭防火墙)
5、安装MySQL
为主服务器和从服务器安装MySQL,须保证两者版本一致,或者slave端版本高于master版本。
三、主服务器配置
1、准备测试数据
准备测试数据,模拟要同步对象。
mysql> create database hr;
mysql> use hr;
mysql> create table emp(id int primary key,name char(20));
mysql> insert into emp(id,name) values(1,'tom');
2、设置my.cnf参数
(1)拷贝配置文件
# cp /usr/local/mysql/my.cnf /etc/my.cnf
如有必要,应注意备份配置文件,并且在生产活动懂养成备份的意识。
(2)参数设置
以下仅列出几个必要参数:
log-bin=mysql-bin 启用二进制日志
server-id= 服务器ID,可1-之间的任意整数
binlog-ignore-db=information_schema 避免同步的数据库
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
binlog-do-db=hr 二进制需要同步的数据库名
注意:在配置文件中不可使用skip-networking参数,否则从服务器将无法连接主服务器并进行数据同步
(3)重启服务器
# service mysqld restart
3、为slave用户添加同步专用权限
(1)创建复制账户并赋权
mysql> GRANT FILE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root'; mysql> FLUSH PRIVILEGES;
(2)添加管理用户
grant all privileges on *.* to admin@'%' identified by 'root';
(3)刷新权限
flush privileges;
四、从服务器设置
1、设置my.cnf参数
(1)备份配置文件
# cp /usr/local/mysql/my.cnf /etc/my.cnf
(2)修改参数信息
必要参数如下:
log-bin=mysql-bin server-id= #从服务器ID binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=mysql replicate-do-db=hr #同步的数据库名 replicate-ignore-db=mysql #屏蔽不同步的数据库 log-slave-updates slave-skip-errors=all slave-net-timeout=
注:MySQL 5.6之后没有master-user等参数,否则重启报错
(3)重启服务器
# service mysqld restart
五、数据库备份、同步
1、对数据库进行备份
[root@master mysql]# /usr/local/mysql/bin/mysqldump -h localhost -uroot -proot --all-databases --lock-all-tables >/tmp/dbdump.sql
[root@master mysql]# scp /tmp/dbdump.sql root@slave:/tmp/
[root@slave ~]# mysql -u root -p < /tmp/dbdump.sql
注:从服务器不需要创建要同步的数据库,备份脚本会自动创建。
2、配置从服务器连接主服务器同步
(1)、获取主服务器二进制日志信息
[root@master mysql]# mysql -uroot -p Enter password:
mysql> flush tables with read lock; --只读锁定
mysql> show master status;
mysql> unlock tables; --解除锁定
(2)设置从服务器同步
[root@slave ~]# mysql -u root –p mysql> stop slaves; mysql> change master to
-> master_host='192.168.152.129',
-> master_user='slave_cp',
-> master_password='root',
-> master_log_file='mysql-bin.000003',
-> master_log_pos=195; --这里的参数取值参考查询到的master日志信息 mysql> start slave;
mysql> show slave status \G
3、同步验证
在master上添加数据,查看slave端的同步情况。
master节点:
[root@master ~]# mysql -uroot -p
mysql> create database test;
mysql> use test;
mysql> create table users(id int primary key,name char(20));
mysql> insert into users(id,name)values(1,'aa');
mysql> use hr;
mysql> show tables;
mysql> create table bb(id int,name char(20));
mysql> insert into emp(id,name)values(2,'bb');
slave节点:
[root@slave ~]# mysql -uroot -p
mysql> select * from test.users;
错误
1、启动从服务器失败
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
解决:
mysql> reset slave; mysql> change master to master_host='192.168.152.129',
master_user='slave_cp',master_password='root',master_log_file='mysql-bin.000005',
master_log_pos=610;
mysql> start slave;
参考:https://zhangge.net/5091.html
参考:http://blog.csdn.net/xlgen157387/article/details/51331244/
MySQL主从复制部署的更多相关文章
- linux运维、架构之路-MySQL主从复制
一.MySQL主从复制原理图 MySQL主从复制原理:实现主从复制原理是三个线程完成的,主的I/O线程,备的I/O线程与SQL线程 1.首先主库db01需要开启binlog.授权一个replicat ...
- 2.快速部署MySQL主从复制
1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- mysql数据库主从复制部署笔记
主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...
- 002.MySQL高可用主从复制部署
一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- Linux下MySQL主从复制(Binlog)的部署过程
什么是 MySQL 的主从复制 Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上 ...
- MySQL高可用主从复制部署
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2. ...
- centos7下部署mysql主从复制
首先大致看一下这个图 环境说明: 系统:centos7 IP:master:192.168.7.235 slave:192.168.7.226 mysql版本MySQL-5.7 1.Master 下载 ...
随机推荐
- 理解以太坊的Layer 2扩容解决方案:状态通道(State Channels)、Plasma 和 Truebit
-宾夕法尼亚州的尼科尔森大桥建设照片(图源).罗马人的工程原理扩展至新的应用 对于以太坊来说,2018年是专注底层架构之年.今年很多早期参与者会测试网络极限,并且重新关注以太坊的扩容技术. 以太坊仍然 ...
- 20135202闫佳歆--week4 系统调用(上)--学习笔记
此为个人笔记存档 week 4 系统调用(上) 一.用户态.内核态和中断处理过程 用户通过库函数与系统调用联系起来. 1.内核态 在高执行级别下,代码可以执行特权指令,访问任意的物理地址. 2.用户态 ...
- Android 7.0+相机、相册、裁剪适配问题
Android 7.0+相机.相册.裁剪适配问题 在manifest中: <provider android:name="android.support.v4.content.File ...
- VMware虚拟机安装ghost win7系统方法
原本地址:http://www.xitongcheng.com/jiaocheng/xtazjc_article_15314.html
- Jmeter当获取正则表达式匹配数字为负数时获取所有匹配的值
需求说明:如果http的bodyData中有类似于{"idList":["6505","6506","2222".... ...
- 小程序开发 event对象中 target和currentTarget 属性的区别。
首先本质区别是: event.target返回触发事件的元素 event.currentTarget返回绑定事件的元素 p包含在div内 在outer上点击时,target跟currentTarget ...
- 2013长春网赛1001 hdu 4759 Poker Shuffle
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4759 题意:有一堆2^n的牌,牌原先按(1,2,....k)排序,每一次洗牌都将牌分成两种情况:(1, ...
- 浅谈final修饰的变量
一直大概的知道final关键字的作用,但是自己实际工作中却很少用,除非在声明一些常量值的时候,今天忽然自己在项目中用一个map进行存储一些值.一开始我只是用private修饰的,心里想的是如果fina ...
- Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键
利用 keybd_event函数可实现,如下面的代码用以实现在一个公共菜单中模拟Ctrl_F按钮以调用DBGridEH的查找对话框功能:这是在一个ActionList中的某一Action的OnExec ...
- Delphi : 制作程序启动欢迎界面
制作欢迎界面的代码,大家参考 登陆窗体命名為:loginform.找到工程文件(Project -> View Source),找到如下代碼部分:begin Application.Init ...