Mariadb主主复制原理及实现

 

 Mariadb主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。比主从复制具有更好的性能。

 

环境说明

需要2台服务器

基于Centos 6.5 mariadb 10.0

服务器:ha111  IP:192.168.61.140

服务器:ha222  IP:192.168.61.146

 

服务器ha111配置

 

  1. mariadb安装过程略过

  2. my.cnf [mysqld]中启用二进制日志

    log-bin=mysql-bin

     

  3. my.cnf [mysqld]中启用中继日志
    relay-log=relay-bin

     

  4. my.cnf [mysqld]中定义server-id
    server-id=140

     

  5. my.cnf [mysqld]中定义自动增长的id字段的增长方式
    auto_increment_offset=1

    auto_increment_increment=2

     

  6. 创建一个允许ha222来访问的用户

    MariaDB [(none)]> grant replication slave,replication clienton *.* to ‘repluser’@’192.168.61.146’ identified by ‘123456’;

     

  7. 授权有复制权限用户账号,把对方指定为主服务器

    MariaDB [(none)]> change master to

    >master_host=’192.168.61.146’,

    >master_user=’repluser’,

    >master_password=’123456’,

    >master_log_file=’mysql-bin.000003’,

    >master_log_pos=496,

    >master_connect_retry=5;

    (注意:master_log_filemaster_log_pos的值,在另一台服务器上执行show master status 查看)

  8. 启动复制,开启IO thread SQL thread 线程

    start slave;

     

  9. 检查是否已经启动

    show slave status\G

     

    下面两项显示Yes即正常

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

 

 

服务器ha222配置

 

  1. mariadb安装过程略过

  2. my.cnf [mysqld]中启用二进制日志

    log-bin=mysql-bin

     

  3. my.cnf [mysqld]中启用中继日志
    relay-log=relay-bin

     

  4. my.cnf [mysqld]中定义server-id
    server-id=146

     

  5. my.cnf [mysqld]中定义自动增长的id字段的增长方式
    auto_increment_offset=2

    auto_increment_increment=2

     

  6. 创建一个允许ha222来访问的用户

    MariaDB [(none)]> grant replication slave,replicationclient on *.* to ‘repluser’@’192.168.61.140’ identified by ‘123456’;

     

  7. 授权有复制权限用户账号,把对方指定为主服务器

    MariaDB [(none)]> change master to master_host=’192.168.61.140’,

    >mster_user=’repluser’,

    >master_password=’123456’,

    >master_log_file=’mysql-bin.000003’,

    >master_log_pos=496,

    >master_connect_retry=5;

    (注意:master_log_filemaster_log_pos的值,在另一台服务器上执行show master status 查看)

  8. 启动复制,开启IO thread SQL thread 线程

    start slave;

     

  9. 检查是否已经启动

    show slave status\G

     

    下面两项显示Yes即正常

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

     

    配置到此完成!

     

测试

 

在任意一台服务器上创建一个数据库

# mysql

  > CREATE DATABASE dx;

     

在另一台服务器上查看数据库信息:

# mysql

  > SHOW DATABASES;

 结果中将显示有一个名为dx的数据库

 

 

 

 

 


你可能感兴趣的:(mysql,mariaDB,主主复制)