http://blog.csdn.net/lgh1117/article/details/8786274

http://blog.csdn.net/libraworm/article/details/1703365

http://blog.itpub.net/29870867/viewspace-1304862/

http://blog.csdn.net/edwzhang/article/details/17226975

一般规范一点的公司,为了服务器的安全稳定,都要进行主从配置,而且开发人员也希望主从配置,因为只有一台机器工作的话,一旦宕机,工程师就得日日夜夜加班搞,但是有主从机的架构就不一样了。

  注:如果刚开始不是主从架构,主库单独跑了一段时间后要改为主从,那需要保证数据库data一致。

  1. 主库编辑my.cnf

  mysql代码

  [mysqld]

  log-bin=mysql-bin

  server-id=1 #配一个唯一的ID编号,(2-2的32次幂)-1。

  #设置要进行或不要进行主从复制的数据库名,同时也要在 Slave 上设定。

  #binlog-do-db=数据库名1

  #binlog-do-db=数据库名2

  #binlog-ignore-db=数据库名1

  #binlog-ignore-db=数据库名2

  binlog-do-db=testdb

  重启mysql 服务后,连接数据库。

  java代码

  mysql> grant replication slave on *.* to slaveuser@192.168.1.2 identified by '123456' ;

  mysql> flush privileges;

  mysql> show master status;

  +------------------+----------+--------------+------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

  +------------------+----------+--------------+------------------+

  | mysql-bin.000016 | 120 | testdb | |

  +------------------+----------+--------------+------------------+

  记录下二进制日志的文件名及位置。

  2. 从库编辑my.cnf

  Mysql代码

  [mysqld]

  server-id=2 #唯一

  #设置要进行或不要进行主从复制的数据库名,同时也要在 Master 上设定。

  #replicate-do-db=数据库名1

  #replicate-do-db=数据库名2

  #replicate-ignore-db=数据库名1

  #replicate-ignore-db=数据库名2

  replicate-do-db=testdb

  重启mysql 服务后,连接数据库。

  Mysql代码

  mysql> change master to master_host='192.168.1.1',master_user='slaveuser',master_password='123456', master_log_file='mysql-bin.000016',master_log_pos=120;

  mysql> start slave;

  mysql> show slave status\G;

  如显示如下,则成功。

  Slave_IO_Running: Yes

  Slave_SQL_Running: Yes

  Replicate_Do_Db: testdb

  3. Mysql主备复制实现工作原理

  从上图来看,复制分成三步:

  master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);

  slave将master的binary log events拷贝到它的中继日志(relay log);

  slave重做中继日志中的事件,将改变反映它自己的数据。

  附一些问题的解决过程:

  1). error:“/usr/sbin/mysqld: unknown variable 'master-host=10.1.4.154'”

  原因是MySQL自5.1.7版本之后不支持master-host 类似的参数,需要在从库上执行:

  change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';

  slave start;

  2). slave status: "Slave_IO_Running:No"

  Mysql代码

  解决方法:

  Mysql > stop slave;

  Mysql > set global sql_slave_skip_counter =1 ;

  Mysql > start slave;

  3). Last_IO_Error: Got fatal error 1236 from master when reading data from binary log

  对照master status 确认log文件及position数据是否正确。

  4). Slave can not handle replication events with the checksum that master is configured to log

  这个错误一般出现在master5.6,slave在低版本的情况下。这是由于5.6使用了crc32做binlog的checksum。除了把master的设置从crc32改到none

  Mysql代码

  binlog-checksum = none [my.cnf]

  5). 在SLAVE执行CHANGE MASTER时,出现ERROR 1201 (HY000): Could not initialize master!

  Msyql代码

  mysql> slave stop;

  Query OK, 0 rows affected, 1 warning (0.00 sec)

  mysql> change master to
master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='updatelog.000004',master_log_pos=106;

  ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

  修正问题:

  Mysql代码

  mysql> slave stop;

  Query OK, 0 rows affected, 1 warning (0.00 sec)

  mysql> reset slave;

  Query OK, 0 rows affected,(0.00 sec)

  mysql> change master to
master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='updatelog.000004',master_log_pos=106;

  Query OK, 0 rows affected (0.05 sec)

  mysql> slave start;

  Query OK, 0 rows affected (0.00 sec)

  6). 主从复制binlog问题,如果没有删除的配置,则会无限增长,严重占用磁盘空间。

  Java代码

  expire_logs_days = 30 #有效期30天,之前的会被删除

  7). 如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。

  Java代码

  (1)主数据库锁表操作,不让数据再进行写入动作。

  mysql>flush tables with read lock;

  (2)查看主数据库的状态

  mysql>show master status;

  记下File以及Position的值,以备从服务器使用。

  (3)把主服务器的数据文件复制到从服务器,最好先用tar归档压缩处理一下

  (4)取消主数据库锁定

  mysql>unlock tables;

  从服务器的操作和前面的步骤一样,略过。

  自己的学习笔记,在java论坛记录下来,也希望对大家有帮助!有更厉害的人的话,求赐教哦!(文章来源:http://www.nei-mao.com/

mysql主从数据库复制的更多相关文章

  1. MySQL主从数据库同步延迟问题解决(转)

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...

  2. Mysql 主从数据库

    MYSQL主从数据库同步备份配置 一.准备 用两台服务器做测试: Master Server: 172.16.0.180/Linux/MYSQL 5.1.41 Slave Server: 172.16 ...

  3. Windows系统环境下创建mysql主从数据库方法(双向主从复制)

    创建mysql主从数据库方法(双向主从复制) (一)Windows系统下的MySQL主从复制(单向复制) (1)环境说明: 1,Mysql版本:mysql5.7.20(主从机mysql版本必须一致) ...

  4. Mysql主从数据库架构的复制原理及配置详解

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  5. 数据字符集mysql主从数据库,分库分表等笔记

    文章结束给大家来个程序员笑话:[M] 1.mysql的目录:在rpm或者yum安装时:/var/lib/mysql  在编译安装时默许目录:/usr/local/mysql 2.用rpm包安装的MyS ...

  6. mysql主从服务器复制原理

    在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的.譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止.介于这种情况,我们来学习一下mysql主从复制. 将Mysql的 ...

  7. 【linux】【mysql】mysql主从数据库

    系统环境:Centos7 主:192.168.8.162 从:192.168.8.127 前提条件 a.关闭防火墙  systemctl stop firewalld 关闭防火墙开机自启 system ...

  8. MacOS使用Docker创建MySQL主从数据库

    一.拉取MySQL镜像 通过终端获取最新的MySQL镜像 docker pull mysql/mysql-server 二.创建MySQL数据库容器配置文件对应目录 我们在当前用户下创建一组目录,用来 ...

  9. mysql主从异步复制过程

    mysql是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失.为了保证mysql数据库的可靠性.就要会一些提高可靠性的技术. 主从复制原理如下. slave(从服务器) master(主服务器) ...

随机推荐

  1. Codeforces 533B Work Group

    http://codeforces.com/problemset/problem/533/B 题目大意: 每个人有一个直接的领导,1是总裁,现在要找一个最大的集合,每个领导领导的人的数量都是偶数,问最 ...

  2. python 执行shell命令

    1.os模块中的os.system()这个函数来执行shell命令 1 2 3 >>> os.system('ls') anaconda-ks.cfg  install.log  i ...

  3. Android ExpandableListActivity的简单介绍及小例子

    Android中常常要用到ListView,但也经常要用到ExpandableListView,ListView是显示列表,而ExpandableListView显示的是分类的列表: 下面用一个例子来 ...

  4. linux下串口的阻塞和非阻塞操作

    有两个可以进行控制串口阻塞性(同时控制read和write):一个是在打开串口的时候,open函数是否带O_NDELAY:第二个是可以在打开串口之后通过fcntl()函数进行控制. 阻塞的定义: 对于 ...

  5. GDKOI2015

    problems http://gdoi.sysu.edu.cn/wp-content/uploads/2015/03/GDKOI-2015-day1.pdf http://gdoi.sysu.edu ...

  6. Bootstrap风格登录界面设计样例

    参考:http://bootsnipp.com/tags/login Register Page   127.8K 187 Modal Login with jQuery Effects   159. ...

  7. JavaScript 精髓整理篇之一(对象篇)postby:http://zhutty.cnblogs.com

    废话篇头: 由于工作关系,所以写博文的时间有那么点~~,其实是输入法太懒了,都是输入法的错~~ 这一系列的博客将总结所有关于JavaScript语言的精髓,适合0基础到大师级别人物阅读. <Ja ...

  8. 设计: ListView 接口,and the missing read-only interfaces in java collection framework

    Java的集合框架以其成功易用的设计征服了很多人(包括我),并且教科书式的诠释了泛型的应用方式. 我也是被 Joshua Bloch 的书引领入门,从中得益良多.我当然不会认为自己在设计上比他懂得更多 ...

  9. Android无法导入下载好的项目(和Eclipse中已经存在的项目命名一样导致冲突)解决办法

    错误提示: 在我们到导入从网络下载的项目时,经常会出现如下问题(选择的项目变灰,并且提示要选择至少一个项目): 错误原因: 出现这样的错误主要是因为你的Eclipse已经存在了和上图中New Proj ...

  10. python - XML文件及其操作

    xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...