• 使用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

  • 相关阅读:
    Enum枚举类型实战总结,保证有用!
    grep 文本搜索工具
    awk 文本编辑器
    sed 流编辑器
    shell 里使用 sed awk
    crontab
    mysqlbinlog日志
    ZK简介,部署
    curl
    正则表达式
  • 原文地址:https://www.cnblogs.com/echo/p/251401.html
Copyright © 2020-2023  润新知