由于需要配置MySQL的主从同步配置,现将配置过程记录下,已被以后不时之需

MySql数据主从同步

 

1.1. 同步介绍

Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一个 Slave上。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。 

   要实现 MySQL 的 主从同步 ,首先必须打开 Master 端的BinaryLog(mysql-bin)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。

1.2. Mysql主从服务器配置

主服务器IP:192.168.1.60

从服务IP:192.168.1.61

Linux:centOS

Mysql版本:5.1.58

以下配置皆在此服务上进行配置

一、主数据库操作

查看主库服务器的my.cnf配置文件,根据mysql安装包、版本不同,相关的路径和配置文件路径会大致不一样,不过大多情况下是一样的。该文件在 etc/目录下。Mysql服务也提供了对不同服务器配置使用不同的配置文件,要使用它们的时候,只需用它们任一一个替换上面的my.cnf文件即可。注:替换文件名必须为my.cnf。

cnf配置文件一般会有四个,可以根据命令 # ll /usr/share/mysql/*.cnf 查看;

my-small.cnf    内存少于或等于64M,只提供很少的的数据库服务;

my-medium.cnf   内存在32M--64M之间而且和其他服务一起使用,例如web;

my-large.cnf    内存有512M主要提供数据库服务;

my-huge.cnf     内存有1G到2G,主要提供数据库服务;

my-innodb-heavy-4G.cnf 内存有4G,主要提供较大负载数据库服务(一般服务器都使用这个);

可以根据服务器配置的不同选择不同的cnf配置文件。

1、 配置my.cnf文件

采用系统默认的etc/my.cnf配置文件进行配置,对主服务器进行配置主要需要在配置文件中添加以下几项(在添加的时候要确保它们不在文件中存在,因为如选择上面几种不同的配置文件,配置里的内容会不一样,如果没有相应的项,需要添加)。

用vi etc/my.cnf打开文件,对文件进行修改,在[mysqld]下面进行添加修改:

Server-id = 1  #这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错;

log-bin = mysql-bin  二进制日志文件,此项为必填项,否则不能同步数据;

binlog-do-db = testcreate  #需要同步的数据库,如果需要同步多个数据库;

则继续添加此项。

binlog-do-db = testcreate1

binlog-do-db = testcreate2

binlog-ignore-db = mysql 不需要同步的数据库;

至此主服务器配置my.cnf配置完成,保存退出文件。

现在对Mysql服务器进行重启:#servicemysqld restart 如果重启失败,则证明配置文件错误,需重新检查。

建议:对my.cnf修改之前最好对其进行备份,以免配置文件修改失败不能及时重启服务器。

2、 配置完成后需要建立同步用的数据库账户

主库需要提供一个账户让从库对起连接并同步,用命令mysql服务器

mysql>grantreplication slave on *.* to ‘testcreate’@’192.168.1.61’ identified by ‘123456’;

说明:’testcreate’:同步的数据库;

‘192.168.1.61’:同步的数据库地址;

‘123456’ :同步的数据库密码,在从库配置时需要设置。

3、显示主库信息

mysql>showmaster status;

执行上述命令显示:

看到上述信息则表示主库建立成功。

4、备份数据库(如果从服务器也为新建库,则不需要此操作)

备份数据库的方法有很多种:如果在同一局域网可以直接复制数据库,也可以用工具直接进行数据导入。

复制数据库用打包的方法:

# cd/data  转到存放Mysql数据库的路径下

# tarcvfz testcreate.tar.gz db/

再从数据库中进行复制解压

# cd/data

# scp192.168.1.61:/data/testcreate.tar.gz

#tarxvfz testcreate.tar.gz

数据复制完毕;

二、 从库配置

从服务器的配置基本与主库配置差不多,选择的从库服务器为:192.168.1.61

1.    配置从库服务my.cnf文件

# vietc/my.cnf 对其进行如下修改:

Server-id = 2 #这里ID改为2 因为主库为1;

log-bin = mysql-bin  必填项,用于数据同步;

master-host = 192.168.1.60 主库IP;

master-user = test 同步用的账户;

master-password = 123456 同步账户密码,主库时的设置;

master-port = 3306 同步数据库的端口号。

2.     重启从库服务器

#service mysqld restart

如果重启失败则配置文件有问题,需重新检查配置。

3.    调整复制过来的数据库的权限(如果有从主库复制过来的数据库)

主库复制过来的数据库权限都为root权限,需要修改为mysql权限

#chown–R mysql:mysql /var/lib/mysql

如果从库是新建的库就不需要进行此步骤

4.    显示从服务器状态

进行mysql服务器:

mysql>showslave status\G;  显示如图:

如果slave_io_running和slave_sql_running都为yes则表示从服务器配置成功。

如果遇到关于position相关的错误,就需要再手动设置以下File/Postion的信息

mysql>Changemaster to master_host = ‘192.168.1.60’

master_user= ‘test’

master_password=’123456’

master_log_file=’mysql-bin.000001’,  主库的文件信息

master_log_pos=’106’;主库的Position信息

三、     主从服务器测试

在主服务器和从服务器建立同样的数据库:testCreate 表为:test,字段为ID,name

往主服务器添加数据

此时从服务器192.168.1.61中testcreate数据库显示为

表示主从服务器同步成功。

四、     常见问题

在配置成服务器时,从库不能进行修改操作,即从库只有读的权限,如果修改了从库数据库,则会造成同步失败:如发现失败,用showslave status\G;查看从服务器的状态信息

如果出现slave_IO_Running:为NO时,则表示从数据库连接失败

Last_Error:会显示出出错日志信息

出现此问题主要是事物回滚问题,解决方法有:

1、

mysql>slave stop; 停止从服务

mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql>slave start; 启动从服务

2、手动重设从服务器

mysql>Changemaster to

master_host= ‘192.168.1.60’

master_user= ‘test’

master_password=’123456’

master_log_file=’mysql-bin.000001’; 主库的文件信息

master_log_pos=’106’;主库的Position信息

到此Mysql主从服务配置完毕

在主服务器中,主要是以写数据为主,建议用InnoDB数据引擎,在读方面用Mysql中的MyISAM引擎读的效率很不错。

MyIsAM引擎支持全文索引,但不支持事务,而InnoDB恰好相反!

MySql数据主从同步配置的更多相关文章

  1. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  2. Docker Mysql数据库主从同步配置方法

    一.背景 最近在做内部平台架构上的部署调整,顺便玩了一下数据库的主从同步,特此记录一下操作- 二.具体操作 1.先建立数据存放目录(-/test/mysql_test/) --mysql --mast ...

  3. CentOS7安装配置MariaDB(mysql)数据主从同步

    CentOS7安装MariaDB并配置主从同步 环境声明: 防火墙firewalld及SElinux均为关闭状态 主库节点:192.168.0.63 从库节点:192.168.0.64 配置主库节点: ...

  4. MySQL数据库主从同步配置

    主服务器必须打开开二进制日志. 主要是修改配置文件 , 一般在 linux 下安装的 mysql 配置文件是 my.cnf, 在 windwos 下是 my.ini, 修改主服务器配置文件 serve ...

  5. 简单的MySQL数据库主从同步配置

    Master配置: 代码如下 复制代码 log-bin = mysql-binserver-id = 1binlog-do-db = powerdns #要同步的数据库 Master新增slave账号 ...

  6. mysql 之 主从同步(单向同步和双向同步)

    一. 实验环境部署 主服务器(MySQL-01) IP: 192.168.8.241  端口3306  ,操作系统:Centos6.5 64位 从服务器(MySQL-02)  IP: 192.168. ...

  7. MySQL 主主同步配置和主从配置步骤

    ★预备知识 : 1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服 ...

  8. MySQL数据库主从同步安装与配置总结

    MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力: ②在从主服务器进行备份,避免备份期间影响主服务器服务: ③当主服务器出现问题时 ...

  9. Docker Mysql主从同步配置搭建

    Docker Mysql主从同步配置搭建 建立目录 在虚拟机中建立目录,例如路径/home/mysql/master/data,目录结构如下: Linux中 新建文件夹命令:mkdir 文件夹名 返回 ...

随机推荐

  1. P1037 最小公倍数

    题目描述 给你两个正整数A和B,求它们的最小公倍数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最小公倍数. 样例输入 6 8 ...

  2. 改善Azure App Service托管应用程序性能的几个技巧

    本文介绍了几个技巧,这些技巧可以改善Azure App Service托管应用程序的性能.其中一些技巧是你现在就可以进行的配置变更, 而其他技巧则可能需要对应用程序进行一些重新设计和重构. 开发者都希 ...

  3. tensorflow在文本处理中的使用——skip-gram & CBOW原理总结

    摘自:http://www.cnblogs.com/pinard/p/7160330.html 先看下列三篇,再理解此篇会更容易些(个人意见) skip-gram,CBOW,Word2Vec 词向量基 ...

  4. 关于vue-cli打包配置部署404

    在vue脚手架(vue-cli)下我很很快的就可以搭建自己的开发环境,但是我们把项目编写完后,需要进行打包上线会遇到各种问题,在根据版本问题,(vue3的版本跟之前相比少了很多配置项),下面是我用老版 ...

  5. Android SDK目录具体结构及Android源码的具体结构

    Android SDK目录具体结构 1. add-ons:这里面保存着附加库,比如Google Maps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面. 2. docs:这里面是And ...

  6. CentOS遇到Qt编译问题(error: cannot find -lGL)

    1.安装Qt,进入CentOS系统的终端,依次执行以下命令 chmod +x qt-opensource-Linux-x64-5.5.1.run ./qt-opensource-linux-x64-5 ...

  7. 【Spring Cloud 源码解读】之 【这也太神奇了,RestTemplate加上一个@LoadBalanced注解就能实现负载均衡!】

    前提概要: 前天,有个前端大佬问了我两个问题:为啥不引入Ribbon依赖就能使用Ribbon?为啥RestTemplate加上@LoadBalanced注解就能负载均衡了?我也表示很疑惑,而我自己其实 ...

  8. Java之String类常用API

    目录 Java之String类常用API char chatAt(int index) int length() char[] toCharArray() String(char value[]) S ...

  9. 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88

    [编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...

  10. SpringMVC||IQ

    Here's question about springmvc 1.Springmvc spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即 ...