mysql 5.6.14主从复制(也称mysql AB复制)环境配置方法

一、mysql主(称master)从(称slave)复制的原理:

(1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
      (2).slave将master的binary log events拷贝到它的中继日志(relay log)
      (3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

附简要原理图:

二、mysql主从复制支持的类型:

(1).基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高

word-spacing: 0px">   (2).基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持
word-spacing: 0px">   (3).混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制.

三、主从配置需要注意的地方:

(1).主DB server和从DB server数据库的版本一致
   (2).主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录]
   (3).主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

四、主从配置的简要步骤:

附简要示意图:

1.主DB SERVER上的配置

(1).安装数据库
   (2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)
   (3).启动数据库,查看当前是哪个日志,position号是多少
   (4).登陆数据库,授权用户[ip地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址(此时自己的IP地址就是从IP地址)]
   (5).备份数据库[记得加锁和解锁]
   (6).传送备份到从DB server上
   (7).启动数据库

以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

(1).登陆数据库,指定主DB server的地址,用户,密码等信息[此步仅双向主从时,需要]

(2).开启同步,查看状态

2.从DB SERVER上的配置

(1).安装数据库
  (2).修改数据库配置文件,指明server_id[如果是搭建双向主从的话,也要开启二进制日志(log-bin)]
  (3).启动数据库,还原备份
  (4).查看当前是哪个日志,position号是多少[单向主从此步不需要,双向主从需要]
  (5).指定主DB server的地址,用户,密码等信息
  (6).开启同步,查看状态

五、单向主从环境[也称 mysql A/B复制]的搭建案例:

1.主DB server和从DB server都安装相应版本的数据库,我的两台DB server都已经安装好(5.6.14版本),都会是双实例,这里就不演示安装,可以参考mysql源码编译安装和mysql多实例配置两篇文章
注:两台机器的的selinux都是disable(永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled),防火墙可以选择关闭,开启的话也行[不行的话,添加防火墙策略]
2.修改主DB server的配置文件(/etc/my.cnf),开启日志功能,设置server_id值,保证唯一[client102为主DB server]

[root@client102 scripts]# vim /etc/my.cnf
# 修改配置文件里,下面两个参数:
# 设置server_id,一般建议设置为IP,或者再加一些数字
server_id =102
# 开启二进制日志功能,可以随便取,最好有含义
log-bin=mysql3306-bin

3.启动数据库服务器,并登陆数据库,授予相应的用户用于同步

# 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start]
[root@client102 scripts]# mysqld_multi start 3306
# 登陆mysql 服务器
[root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p
# 授予用户权限用于主从同步
mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong';
Query OK, 0 rows affected (0.00 sec)
# 刷新授权表信息
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 查看position 号,记下position 号(很重要,从机上需要这个position号和现在的日志文件,我这里是414和mysql3306-bin.000001)
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| mysql3306-bin.000001 |   414 |       |         |          |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4.为保证主DB server和从DB server的数据一致,这里采用主备份,从还原来实现初始数据一致

代码如下:

# 临时锁表
mysql> flush tables with read lock;
# 我这里实行的全库备份,在实际中,我们可能只同步某一个库,可以只备份一个库
# 新开一个终端,执行如下操作
[root@client102 data]# mysqldump  -p3306 -uroot -p  -S /usr/local/mysql/mysqld3306.sock  --all-databases > /tmp/mysql.sql
# 解锁
mysql> unlock tables;
# 将备份的数据传送到从机上,用于恢复
 [root@client102 data]# scp  /tmp/mysql.sql  root@192.168.1.100:/tmp

5.从DB server配置文件只需修改一项,其余用命令行做

代码如下:

[root@client100 ~]# vim /etc/my.cnf
# 设置server_id,一般建议设置为IP,或者再加一些数字
server_id =100

6.启动数据库,还原备份数据

代码如下:

# 启动数据库
[root@client100 ~]# mysqld_multi start 3306
# 还原主DB server备份的数据
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql

7.登陆数据库,添加相关参数(主DBserver的ip/端口/同步用户/密码/position号/读取哪个日志文件)

代码如下:

[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p
mysql> change master to
    -> master_host='192.168.1.102',
    -> master_user='kongzhong',
    -> master_password='kongzhong',
    -> master_port=3306,
    -> master_log_file='mysql3306-bin.000001',
    -> master_log_pos=414;
#/*  下面是一部分注解:
#/*  指定主DB server的IP地址
master_host='192.168.1.102'
#/*  指定用于同步的用户[这个就是我们在主DB server授权的用户]
master_user='kongzhong'
#/* 指定用于同步的用户的密码
master_password='kongzhong'
#/* 指定主DB server的端口[下面一个例子,可以重点看这个]
master_port=3306
#/*  指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志]
master_log_file='mysql3306-bin.000001'
#/*  指定 从哪个POSITION号开始读
master_log_pos=414
# 开启主从同步
mysql> start slave;
# 查看主从同步状态
mysql> show slave status\G;
# 主要看以下两个参数:[这两个参数如果是yes就表示主从同步正常]
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

8.下面大家就可以在主DB server上新建一个表,看是否能同步到从DB server上,我这里就不测试了

[注:千万不要在从DB server手动插入数据,那样数据就不一致,主从就会断开,需要重新配置了]

如果有问题,可以尝试关闭IPTABLES(/etc/init.d/iptables stop)和selinux(setenforce 0:临时关闭selinux,永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled)

9.上面所搭建的是单向主从,也是用的比较多的,有人想了解双向主从是如何搭建,其实,就是主DB server和从DB sever都开启日志功能,然后在主DB SERVER执行授权用户[这里授权的是自己作为从服务器,也就是这里的IP地址是主DB server的IP地址],然后再在主DB server上进行chang master操作.有不理解的可以留言询问.

(0)

相关推荐

  • MySQL 5.6.14 win32安装方法(zip版)

    1 从http://dev.mysql.com/downloads/mysql/下载MySQL Community Server的Windows 平台mysql-5.6.14-win32.zip压缩包 2 将文件解压至F:\mysql-5.6.14-win32 3 切换至目录F:\mysql-5.6.14-win32,将文件my-default.ini复制一份重命名为my.ini放到当前目录下 4 打开my.ini进行MySQL配置,主要设置以下几项: [mysqld] #这一句解决有IPV6协

  • MySql 5.6.14 winx64配置方法(免安装版)

    1. 下载MySQL Community Server 5.6.14 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下. 3. 添加环境变量 变量名:MYSQL_HOME 变量值:D:\Program Files\mysql-5.6.14-winx64 即为mysql的自定义解压目录. 再在Path中添加 %MYSQL_HOME%\bin 4. 注册windows系统服务 将mysql注册为windows系统服务 操作如下: 1)新建一个my.ini文件并把my.ini文

  • Mysql从5.6.14安全升级至mysql5.6.25的方法

    服务器上Mysql的版本为:社区版的mysql-community-server-5.6.14.近日局方对服务器进行漏洞扫描,发现zhyh08上的mysql存在几个高危漏洞,要求进行修复.受这几个漏洞影响的主要是5.6.17及以前的版本,所以将mysql升级至最新的5.6.25即可解决问题. 1.下载最新的mysql安装包(rpm文件),链接如下: MySQL-5.6.25-1.el6.x86_64.rpm-bundle.tar 2.备份数据库数据,这里使用的是mysqldump命令. 3.备份

  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql 1 修改mysql的配置文件 /etc/mysql/conf.d/mysql.cnf 在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有[mysql]) no-auto-rehash default-character-set=utf8 /etc/mysql/mysql.conf.d/mysqld.cnf 在[mysqld]下加入 socket = /var/run/mysqld/mysqld.sock port

  • 体验MySQL5.6.25并处理所遇到的问题

    在安装包下的根目录,之前的版本是有my.ini文件可以用来配置的,然而在新的版本中却只发现了my-defult.ini文件. 而且里面的数据少之又少.想要修改字符编码之前的方式行不通了. 用记事本打开该文件会发现并没有[default-character-set = xxx]或者[character_set_server=xxx].这时应该怎么办. 1,复制该文件,并且命名为my.ini,这样根目录下有my-default.ini和my.ini两个文件 .接下来我们只需修改my.ini里面的内容

  • mysql 5.6.14主从复制(也称mysql AB复制)环境配置方法

    一.mysql主(称master)从(称slave)复制的原理: (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)       (2).slave将master的binary log events拷贝到它的中继日志(relay log)       (3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演) 附简要原理图: 二.mysql主从复制支持的

  • win+apache+php+mysql+phpmyadmin环境配置方法

    win+apache+php+mysql环境配置2007-03-09 23:38由于要把学生在线的博客从asp转到php,需要以上的环境配置,在网上找了一些资料,但是都是比较老的,所以决定自己总结一下.         我用的版本也不是最新的,但是是比较稳定的,discuz的官方网上有一些好的说明,以及一些好的软件的下载地址.http://www.discuz.com/index.php?category=4,大家可以看一下. 我用的软件如下: apache:    apache_2.2.3-w

  • windows下apache+php+mysql 环境配置方法

    一 准备 1 下载apache http://httpd.apache.org/download.cgi#apache24 httpd-2.2.22-win32-x86-openssl-0.9.8t.msi openssl表示带有openssl模块,利用openssl可给Apache配置SSL安全链接 2 下载php http://windows.php.net/downloads/releases/archives/ php-5.3.5-Win32-VC6-x86.zip 下载vc6版本 VC

  • CentOS+Nginx+PHP+MySQL标准生产环境配置方法

    PHP 5.3.1 MySQL 5.0.89 Nginx 0.8.33 或 0.7.65 (可选) 这个可比网上流传的什么一键安装包要好得多,强烈推荐此法安装,适合所有菜鸟和高手.我服务器上全用的源代码编译安装,也好不到哪去,还很费劲.我这个装完已经包含 php 的一些常用扩展, PDO,eaccelerator,memcache,tidy等等. CentOS 最小化安装,然后先新建一个 repo # vi /etc/yum.repos.d/centos.21andy.com.repo 放入如下

  • windows下jsp+mysql网站环境配置方法第1/2页

    数据库采用mysql(配置过程如有问题可以重启tomcat试一下) 一.下载软件 .J2SE http://java.sun.com/j2se/.4.2/download.html 2.Tomcat服务器 http://tomcat.apache.org/download-4.cgi 3.mysql服务器 http://dev.mysql.com/downloads/mysql/5.0.html 安装时字符集选latin(应与数据库采用字符集相同) 安装好数据库后用以下命令看数据库采用什么字符集

  • MYSQL 完全备份、主从复制、级联复制、半同步小结

    mysql 完全备份 1,启用二进制日志,并于数据库分离,单独存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql-bin 创建/data/bin文件夹并授权 chown mysql.mysql /data/bin 2,完成备份数据库 mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 3,对数据库进行增删改 INSERT hellodb.students(stu

  • MySql 5.7.14 解压版安装步骤详解

    下面主要分为五大步给大家介绍mySql 5.7.14 解压版安装教程.感兴趣的朋友一起看看吧. 第一步:下载最近的MySQL文件并且解压: 下载最新版的MySQL–mysql-5.7.12下载地址 将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是D:\MySQL\mysql-5.7.12-winx64 第二步:配置环境变量 这里不多说,bin目录配置到path下面就行了. 第三步:添加配置文件 直接复制一个解压路径下面的 my-default.ini文件,重命名为my.ini然后编辑该文

  • mysql 5.7.14 安装配置方法图文教程

    因笔者个人需要需要在本机安装Mysql,先将安装过程记录如下,希望对他人有所参考. 一.下载软件 1. 进入mysql官网,登陆自己的oracle账号,下载Mysql-5.7.14,下载地址:http://dev.mysql.com/downloads/mysql/ 2.将下载好的文件解压到指定目录,笔者解压在C:\software\Mysql\mysql-5.7.14-winx64 二. 安装过程 1.首先配置环境变量path,将C:\software\Mysql\mysql-5.7.14-w

  • Centos6.5编译安装mysql 5.7.14详细教程

    本文实例为大家分享了CENTOS6.5 编译mysql 5.7.14安装配置方法,供大家参考,具体内容如下 mysql5.7.14 编译安装在自定义文件路径下 下载安装包 配置安装环境 编译安装 cmake\ -DCMAKE_INSTALL_PREFIX=/data/db5714 \ -DMYSQL_DATADIR=/data/db5714/var \ -DMYSQL_UNIX_ADDR=/data/db5714/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \

随机推荐