两台Mysql数据库数据同步实现

做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本。

1. 安装配置

两台服务器,分别安装好Mysql,都安装在 /usr/local/mysql 目录下(安装步骤省略,请参考相关文档),两台服务器的IP分别是192.168.0.1和192.168.0.2,我们把192.168.0.1作为master数据库,把192.168.0.2作为slave服务器,我们采用单向同步的方式,就是master的数据是主的数据,然后slave主动去master哪儿同步数据回来。

两台服务器的配置一样,我们把关键的配置文件拷贝一下,默认的配置文件是在 /usr/local/mysql/share/mysql目录下,分别有 my-large.cnf, my-medium.cnf, my-small.cnf等几个文家,我们只是测试,使用my-medium.cnf就行了。mysql安装完后,默认的配置文件是指定在数据库存放目录下的,我们用的是4.1.X的,所以配置文件就应该在 /usr/local/mysql/var 目录下,于是把配置文件拷贝过去:
cp /usr/local/mysql/share/mysql/my-medium.cnf  /usr/local/mysql/var/my.cnf

两台服务器做相同的拷贝配置文件操作。

2. 配置Master服务器

我们要把192.168.0.1配置为主mysql服务器(master),那么我们就要考虑我们需要同步那个数据库,使用那个用户同步,我们这里为了简单起见,就使用root用户进行同步,并且只需要同步数据库abc。
打开配置文件:
vi /usr/local/mysql/var/my.cnf

找到一下信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id        = 1    //1为master,2为salve

添加两行:
sql-bin-update-same     //同步形式
binlog-do-db     = abc  //要同步的数据库

重启192.168.0.1的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &

3. 配置Slave服务器

我们的slave服务器主要是主动去master服务器同步数据回来,我们编辑配置文件:
vi /usr/local/mysql/var/my.cnf

找到下面类似的信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id        = 1

把上面的server-id修改为2,同时添加一些信息:
server-id                   = 2                        //本Mysql是slave服务器
master-host             = 192.168.0.1    //master服务器的IP
master-user             = root                  //连接master服务器的用户
master-password   = ''                        //连接master服务器的密码
master-port              = 3306                //连接端口
master-connect-retry    = 10              //重试次数
replicate-do-db        = abc                  //要同步的数据库
log-slave-updates                              //同步的形式

重启192.168.0.2的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &

4. 测试安装

首先查看一下slave的主机日志:
cat /usr/local/mysql/var/xxxxx_err (xxx是主机名)

检查是否连接正常, 看到类似这样的信息就成功了

051031 11:42:40  mysqld started
051031 11:42:41  InnoDB: Started; log sequence number 0 43634
/usr/local/mysql/libexec/mysqld: ready for connections.
Version: '4.1.15-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './new4-relay-bin.000001' position: 4
051031 11:43:21 [Note] Slave I/O thread: connected to master 'root@192.168.0.1:3306',  replication started in log 'FIRST' at position 4

在Master查看信息

/usr/local/mysql/bin/mysql -u root

查看master状态:
mysql> show master status;

查看Master下mysql进程信息:
mysql> show processlist;

在slave上查看信息:

/usr/local/mysql/bin/mysql -u root

查看slave状态:
mysql> show slave status;

查看slave下mysql进程信息:
mysql> show processlist;

你再在master的abc库里建立表结构并且插入数据,然后检查slave有没有同步这些数据,就能够检查出是否设置成功。

最后,如果有兴趣的话,可以研究一下双击热备份,或者一台master,多台slave的同步实现。

两台Mysql数据库数据同步实现的更多相关文章

  1. OGG实现两台Oracle数据库的同步

    今天通过最简单的一个例子,给大家讲解下 goldengate 实现两台Oracle数据库的同步.内容如下:1.配置数据库信息.2.安装golden gate.3.配置golden gate.4.测试同 ...

  2. 两台SQL Server数据同步解决方案

    复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可 ...

  3. MYSQL数据库间同步数据

    http://blog.csdn.net/swandy45/article/details/6982421 环境要求: Windows 操作系统 需要Mysql 3.23.15以后的版本. 假设数据库 ...

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

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

  5. mysql数据库主从同步读写分离(一)主从同步

    1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做?  不往从服务器去写了 ...

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

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

  7. MySQL数据库主从同步实战过程

       Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...

  8. MySQL数据库主从同步延迟分析及解决方案

    一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...

  9. mysql数据库主从同步

    环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168. ...

随机推荐

  1. day31(正则表达式)

    1.校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间.^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2. 校验中文字符串 ...

  2. (暴力 记录)Camellia的难题 -- zzuli -- 1784

    http://acm.zzuli.edu.cn/problem.php?id=1784 Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MBSubmi ...

  3. noip第25课作业

    1.   求一个有向图所有顶点入度的和 输入有向图的顶点个数,边数以及各顶点之间的关联情况,要求求出这个有向图的所有顶点入度的总和. [输入格式] 第1行:2个空格分开的整数n(2<=n< ...

  4. common.php

    <?php /** * */ class Common { if(!function_exists('is_php')) { function is_php($version = '5.0.0' ...

  5. hdu 1059

    题目大意:就是有价值1.2.3.4.5.6的硬币各多少个,然后让你判断能否把他们分成价值相等的两部分. 题目思路:目测dp,一看果然dp,完全背包,需要剪枝,硬币个数为容量,下标为value,用一个b ...

  6. Ubuntu12搭建nutch1.2+tomcat7+jdk1.6

    Ubuntu12搭建nutch1.2+tomcat7+jdk1.6 所用软件:jdk-6u24-linux-i586.bin apache-tomcat-7.0.27.tar.gz apache-nu ...

  7. python模块补充

    一.模块补充 configparser 1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -opti ...

  8. Stringbuffer与substring

    1. Stringbuffer 有append()方法 Stringbuffer 其实是动态字符串数组 append()是往动态字符串数组添加,跟“xxxx”+“yyyy”相当那个‘+’号 跟Stri ...

  9. hive 动态分区与混合分区

    hive的分区概念,相信大家都非常了解了.通过将数据放在hdfs不同的文件目录下,查表时,只扫描对应分区下的数据,避免了全表扫描. 提升了查询效率. 关于hive分区,我们还会用到多级分区.动态分区. ...

  10. Android-Java-单例模式优化&多线程并发

    上一篇博客,Android-Java单例模式,介绍了在真实开发过程中,普遍使用的几种单例模式,而今天这篇博客,将要对单利模式进行优化 并且 通过多线程并发来分析 单利模式的优化: 对于为什么会出现安全 ...