使用Mysql的Replication功能实现数据库同步

 

本文档仅在于实验MysqlReplication功能,没有考虑权限等其他问题,用于实验的服务器和客户机请使用没有安装过Mysql的计算机,如果安装过Mysql请卸载。请按照下面的顺序依次进行,改变顺序可能导致实验失败。

1、在下面地址下载免安装的Mysql数据库

http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-noinstall-5.0.13-rc-win32.zip/from/pick

 

2、解压缩到C:\Mysql目录下

 

3、注册服务并运行

开始〉运行cmd

C:\Mysql\bin目录下执行以下命令:

C:\Mysql\bin>mysqld-nt –install

C:\Mysql\bin>net start mysql

 

4、建用户和需要同步的表

登陆数据库

C:\Mysql\bin>mysql -u root

mysql> GRANT ALL PRIVILEGES ON *.* TO slave@"%" IDENTIFIED BY '1234' WITH GRANT OPTION;

mysql> use test

mysql> CREATE TABLE `backup` (

  `back_id` int(6) unsigned NOT NULL auto_increment,

  `back_name` varchar(100) NOT NULL default 'name',

  `insert_user` varchar(100) NOT NULL default 'slave',

  `update_user` varchar(100) NOT NULL default 'slave',

  `insert_time` datetime NOT NULL default '0000-00-00 00:00:00',

  `update_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

  `comment` text,

  `delete_flag` tinyint(4) NOT NULL default '0',

  PRIMARY KEY  (`back_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;;

mysql> INSERT INTO `backup`(back_name,insert_user,update_user,insert_time,update_time,

comment,delete_flag) VALUES ('Repliaction','li.mx','li.mx','2005-08-12 00:00:00','20050816112158',

NULL,0);

mysql>quit

停止数据库

C:\Mysql\bin>net stop mysql

 

5、部署配置好的数据库

把配置好的数据库拷贝到客户机

拷贝服务器的C:\Mysql到客户机的C:\Mysql

 

6、编辑服务器的配置文件

服务器C:\Mysql\my.cnf的内容如下:

[mysqld]

server-id=1

log-bin=c:\mysql\mysqllog

binlog-do-db=test

 

7、编辑客户机的配置文件

客户机C:\Mysql\my.cnf的内容如下:

[mysqld]
server-id=
49  #改为不重复的整数即可(如IP192.168.99.49的客户机可设为49
master-host=192.168.99.
164  #改为服务器IP
port=330
6 
master-user=
slave
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=test
report-host=192.168.99.49
 #改成本机IP
report-port=330
6 

 

注意如果再次修改此配置文件,在启动数据库前请删除C:\Mysql\data\master.info.

 

8、启动服务器

开始〉运行cmd

C:\Mysql\bin目录下执行以下命令:

C:\Mysql\bin>net start mysql

 

9、启动客户机

开始〉运行cmd

C:\Mysql\bin目录下执行以下命令:

C:\Mysql\bin>mysqld-nt –install

C:\Mysql\bin>net start mysql

 

10、在服务器执行SQL,可观察到客户端同步

登陆服务器数据库,插入一条记录

C:\Mysql\bin>mysql -u root

mysql> use test

mysql> INSERT INTO `backup`(back_name,insert_user,update_user,insert_time,update_time,

comment,delete_flag) VALUES ('test','li.mx','li.mx','2005-08-12 00:00:00','20050816112158',

NULL,0);

登陆客户机数据库,可以察看到这条记录

C:\Mysql\bin>mysql -u root

mysql> use test

mysql> select * from backup;

 

11、安装MySQLAdministrator可以观察到客户机的状态

从下面的地址可以下载免安装的MySQLAdministrator1.1,解压缩到C:\即可

http://dev.mysql.com/get/Downloads/MySQLAdministrationSuite/mysql-administrator-1.1.3-win-noinstall.zip/from/pick

运行,出现登陆界面如下:

Ok进入,在Replication Status可以看到客户端和服务器的状态

 

 

关于配置选项的更多信息请参考

http://dev.mysql.com/doc/mysql/en/replication-options.html

 

备注:

mysql的命令

注册服务:mysqld-nt –-install

注销服务:mysqld-nt –-remove

启动数据库net start mysql

停止数据库:net stop mysql

登陆数据库mysql -u root

 

mysqlSQL语句

建用户并分配权限:GRANT ALL PRIVILEGES ON *.* TO slave@"%" IDENTIFIED BY '1234' WITH GRANT OPTION;

更改当前数据库:use test

建表CREATE TABLE `backup` (

  `back_id` int(6) unsigned NOT NULL auto_increment,

  `back_name` varchar(100) NOT NULL default 'name',

  `insert_user` varchar(100) NOT NULL default 'slave',

  `update_user` varchar(100) NOT NULL default 'slave',

  `insert_time` datetime NOT NULL default '0000-00-00 00:00:00',

  `update_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

  `comment` text,

  `delete_flag` tinyint(4) NOT NULL default '0',

  PRIMARY KEY  (`back_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;;

插入一条记录:

INSERT INTO `backup`(back_name,insert_user,update_user,insert_time,update_time,comment,

delete_flag) VALUES ('Repliaction','li.mx','li.mx','2005-08-12 00:00:00','20050816112158',NULL,0);

察看服务器状态:show master status

察看客户机状态:show slave status

退出数据库:quit

原文地址:https://www.cnblogs.com/echo/p/251401.html