Master-Master MySQL 复制安装配置试验

一、  架构

二、  安装Mysql server

下面以在DB1(192.168.0.10)的配置为例,DB2的配置基本一样,只要修改my.cnf中的server_id =2

1.        安装mysql-server


db1# apt-get install mysql-server

注:

?  如果安装有问题,执行apt-getupdate更新源后再重试

?  安装过程中需要输入root密码,设置后记住(123456)

2.        验证数据库安装


db1# mysql -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 42

Server version: 5.5.38-0ubuntu0.12.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

(db1)mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

+--------------------+

3 rows in set (0.00 sec)

(db1)mysql>

3.        创建测试数据库


CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `test`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`name` varchar(16) DEFAULT NULL,

`age` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

此步骤略

4.        my.cnf配置修改

以下红色部分为修改的配置


The MySQL database server configuration file.

#

# You can copy this to one of:

# - "/etc/mysql/my.cnf" to set global options,

# - "~/.my.cnf" to set user-specific options.

#

# One can use all long options that the program supports.

# Run program with --help to get a list of available options and with

# --print-defaults to see which it would actually understand and use.

#

# For explanations see

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients

# It has been reported that passwords should be enclosed with ticks/quotes

# escpecially if they contain "#" chars...

# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

[client]

port           = 3306

socket                = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs

# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.

[mysqld_safe]

socket                = /var/run/mysqld/mysqld.sock

nice           = 0

[mysqld]

#

# * Basic Settings

#

user          = mysql

pid-file      = /var/run/mysqld/mysqld.pid

socket                = /var/run/mysqld/mysqld.sock

port           = 3306

basedir              = /usr

datadir              = /var/lib/mysql

tmpdir               = /tmp

lc-messages-dir        = /usr/share/mysql

skip-external-locking

#

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

#bind-address           = 127.0.0.1

bind-address             =0.0.0.0

#

# * Fine Tuning

#

key_buffer                 = 16M

max_allowed_packet       = 16M

thread_stack            = 192K

thread_cache_size       = 8

# This replaces the startup script and checks MyISAM tables if needed

# the first time they are touched

myisam-recover         = BACKUP

#max_connections        = 100

#table_cache            = 64

#thread_concurrency     = 10

#

# * Query Cache Configuration

#

query_cache_limit   = 1M

query_cache_size        = 16M

#

# * Logging and Replication

#

# Both location gets rotated by the cronjob.

# Be aware that this log type is a performance killer.

# As of 5.1 you can enable the log at runtime!

#general_log_file        = /var/log/mysql/mysql.log

#general_log             = 1

#

# Error log - should be very few entries.

#

log_error = /var/log/mysql/error.log

#

# Here you can see queries with especially long duration

#log_slow_queries  = /var/log/mysql/mysql-slow.log

#long_query_time = 2

#log-queries-not-using-indexes

#

# The following can be used as easy to replay backup logs or for replication.

# note: if you are setting up a replication slave, see README.Debian about

#       other settings you may need to change.

#server-id                  = 1

#log_bin                     = /var/log/mysql/mysql-bin.log

expire_logs_days     = 10

max_binlog_size         = 100M

#binlog_do_db                   = include_database_name

#binlog_ignore_db  = include_database_name

#

# * InnoDB

#

# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.

# Read the manual for more InnoDB related options. There are many!

#

# * Security Features

#

# Read the manual, too, if you want chroot!

# chroot = /var/lib/mysql/

#

# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".

#

# ssl-ca=/etc/mysql/cacert.pem

# ssl-cert=/etc/mysql/server-cert.pem

# ssl-key=/etc/mysql/server-key.pem

server_id = 1

log_bin = /var/log/mysql/mysql-bin.log

log_bin_index = /var/log/mysql/mysql-bin.log.index

relay_log = /var/log/mysql/mysql-relay-bin

relay_log_index = /var/log/mysql/mysql-relay-bin.index

expire_logs_days = 10

max_binlog_size = 100M

log_slave_updates = 1

auto_increment_increment = 2

auto_increment_offset = 1

[mysqldump]

quick

quote-names

max_allowed_packet       = 16M

[mysql]

#no-auto-rehash      # faster start of mysql but no tab completition

[isamchk]

key_buffer                 = 16M

#

# * IMPORTANT: Additional settings that can override those from this file!

#   The files must end with ‘.cnf‘, otherwise they‘ll be ignored.

#

!includedir /etc/mysql/conf.d/

5.        创建三种角色的用户

表格 1


角色


功能


权限


monitor user


MMM(Multi-Master replication manager of MYSQL)监控各主控的健康状况


REPLICATION CLIENT


agent user


MMM代理用来设置只读属性,复制主控等


SUPER, REPLICATION CLIENT, PROCESS


replicate user


用来复制


REPLICATION SLAVE

表格 2


(db1)mysql> GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor‘@‘115.29.198.150‘ IDENTIFIED BY ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

(db1)mysql> GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘42.96.%.%‘   IDENTIFIED BY ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

(db1)mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication‘@‘42.96.%.%‘ IDENTIFIED BY ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

三、  同步DB1和DB2数据库

首先假设DB1包含正确的数据(即使是空数据库),进行DB1和DB2直接的数据同步。

1.        以下在DB1所在服务器上执行数据导出


(db1)mysql> FLUSH TABLES WITH READ LOCK;

(db1)mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 |      616 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

(db1)mysql>

2.        另开一个命令窗口导出数据


(db1)# mysqldump -u root -p --all-databases > /tmp/database-backup.sql

3.        解锁第一个窗口


(db1)mysql> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

(db1)mysql>

4.        将DB1导出的数据导入DB2

1)        拷贝到DB2


(db1)# scp database-backup.sql [email protected]:/tmp/

The authenticity of host ‘192.168.0.11 (192.168.0.11)‘ can‘t be established.

ECDSA key fingerprint is 55:84:03:9e:d9:74:cc:cd:03:59:23:3f:df:d9:77:a5.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.0.11‘ (ECDSA) to the list of known hosts.

[email protected]‘s password:

database-backup.sql                                                                                                                  100%  528KB 527.9KB/s   00:00

(db1):/tmp#

2)        导入DB2


(db2)# mysql -u root -p < /tmp/database-backup.sql

Enter password:

(db2)#

3)        应用权限


(db2)mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

4)        拷贝debian.cnf

将/etc/mysql/debian.cnf 从 DB1拷贝到DB2, 这个文件是用来启动和关闭mysql用的。


(db1)# scp debian.cnf [email protected]:/tmp/

在DB2上备份原来的debian.cnf,然后使用从DB1拷贝过来的debian.cnf


(db2)# mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.orign

(db2)# cp -f debian.cnf /etc/mysql/debian.cnf

上述步骤完成后准备工作都做好了,可以开始配置复制。

四、  复制配置

1.        在DB2上执行:


(db2)mysql> CHANGE MASTER TO master_host=‘192.168.0.10‘, master_port=3306, master_user=‘replication‘, master_password=‘123456‘, master_log_file=‘mysql-bin.000002‘, master_log_pos=616;

Query OK, 0 rows affected (0.04 sec)

注:master_log_file=‘mysql-bin.000002‘, master_log_pos=616 信息来自于在DB1上执行

mysql> show master status;

 

2.        在DB2上启动SLAVE


(db2)mysql> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

3.        DB2上检查复制进程


(db2)mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.10

Master_User: replication

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000002

Read_Master_Log_Pos: 616

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 616

Relay_Log_Space: 409

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

4.        配置从DB2复制到DB1

1)        DB2状态


(db2)mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 |      107 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

mysql>

2)        DB1复制的配置、启动和检查


(db1)mysql> CHANGE MASTER TO master_host = ‘192.168.0.11‘, master_port=3306, master_user=‘replication‘,

->               master_password=‘123456‘, master_log_file=‘mysql-bin.000002‘, master_log_pos=107;

Query OK, 0 rows affected (0.05 sec)

mysql> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.11

Master_User: replication

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000002

Read_Master_Log_Pos: 107

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 107

Relay_Log_Space: 409

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 2

1 row in set (0.00 sec)

mysql>

上述步骤完成MASTER-MASTER的复制配置,下面进行测试。

五、  复制验证

1.        在DB1上插入一条数据


(db1)mysql> select * from user;

Empty set (0.00 sec)

(db1)mysql> insert into user(name,age) values(‘user1‘,20);

Query OK, 1 row affected (0.03 sec)

(db1)mysql>

2.        在DB2上检查


(db2)mysql> select * from user;

Empty set (0.00 sec)

(db2)mysql> select * from user;

+-------+------+

| name  | age  |

+-------+------+

| user1 |   20 |

+-------+------+

1 row in set (0.00 sec)

(db2)mysql>

表面在DB1插入的(user1,20)这条记录已经被复制到DB2中。

3.        在DB2上插入一条数据


(db2)mysql> insert into user(name,age) values(‘user2‘,30);

Query OK, 1 row affected (0.02 sec)

4.        在DB1上进行检查


(db1)mysql> select * from user;

+-------+------+

| name  | age  |

+-------+------+

| user1 |   20 |

| user2 |   30 |

+-------+------+

2 rows in set (0.00 sec)

表面在DB2插入的(user2,30)这条记录已经被复制到DB1中。

上述测试表面,DB1<----->DB2的MM配置完全成功。

时间: 2024-10-30 10:52:35

Master-Master MySQL 复制安装配置试验的相关文章

(转载)绿色版Mysql的安装配置

本文出自于:http://johnnyhg.javaeye.com/blog/245544 一.下载MySQL http://www.mysql.org/downloads 我下载的是mysql-noinstall-5.0.67-win32.zip 二.安装过程 1.解压缩 mysql-noinstall-5.0.67-win32.zip 到一个C盘,重新命名为 MySQL5 .      假定MYSQL_HOME=C:/ MySQL5 2.编辑mysql的运行配置文件my.ini,如果没有,可

Centos6.5 + Nginx +mysql + php 安装配置文档

一.安装环境准备 yum -y install vim lrzsz 上传mysql.nginx.php安装包 (1)Nginx的下载地址: http://nginx.org/en/download.html (2)PHP安装包的下载 http://php.net/downloads.php        (3)MySQL的下载 https://www.mysql.com/downloads/             (4)安装包上传到服务器 /usr/local/src文件夹目录下: mkdir

mysql 免安装 配置及远程访问

1.将下载的MySQL压缩包解压到自定义目录下(D:\Program Files (x86)\mysql-5.6.16-winx64). 2.将mysql注册为windows系统服务 操作如下: 1)新建一个my.ini文件并把my.ini文件放到D:\Program Files (x86)\mysql-5.6.16-winx64\下,my.ini内容如下: [client] port=3306 default-character-set=utf8 [mysqld] # 设置为MYSQL的安装目

Vmware Centos6.2下mysql的安装配置

1.vmware10安装centos6 http://jingyan.baidu.com/article/afd8f4de6c25c534e286e9d9.html 2.Vmware Centos6.2下mysql的安装配置 http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 3.navicat无法连接mysql解决方案 http://www.cnblogs.com/zhuawang/p/3918616.

Linux(Ubuntu) Mysql的安装配置例子以及常用命令

1.安装配置例子 有空再写 2.注意事项 (1)启动mysql 在/etc/mysql 目录下 service mysql start  新版本是(service mysqld start  ) (2)暂停 mysql service mysql stop 新版本是(service mysqld stop ) (3)重启 mysql service mysql restart新版本是(service mysqld restart) (4)客户端连不上linux的mysql数据库 解决:修改一个文

mysql免安装配置

准备 在mysq官网 http://dev.mysql.com/downloads/mysql/,下载最新稳定版本 版本简介参考:1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持.2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天.3. MySQL Cluster 集群版,开源免费.可将几个MySQL Server封装成一个Server.4. MySQL Cluster CGE 高级集群版,需付费.作为开发者使用,

mysql无安装配置

1.Windows7下MySQL5.5.20免安装版的配置 (1).下载mysql-5.5.20-win32.zip,解压到E:\AppCenter,E盘的AppCenter文件夹下就会出现mysql-5.5.25-winx64目录,将其重命名为mysql. (2).配置MYSQL的环境变量 新建系统变量: MYSQL_HOME,值为E:\AppCenter\mysql在PATH变量的最后面添加: ;%MYSQL_HOME%\bin (3).新建文件my.ini,在my.ini文件中加入如下简单

MySQL数据库安装配置

1,下载MySQL 打开MySQL的官网www.mysql.com,发现有一个DOWNLOADS 点击它,进入到MySQL的下载页面,在页面的底部有一个MySQL Community Edition, 并且下面有一个蓝色的链接 点击这个蓝色的链接,进入到社区版本,也就是免费版本的下载页面 ,MySQL Community Downloads字样下面有一个  MySQL Community Server (GPL), 点击它,或点击下面download, 这才真正进入到MySQL 的下载页面,向下

windows 服务器MYSQL 数据库安装配置

一.到官网下载MYSQL 打开官网地址:www.mysql.com, 选择 DOWNLOADS,进入到MySQL的下载页面,在页面的底部有一个MySQL Community Edition, 并且下面有一个蓝色的链接 点击进入到下载页面: 点击进入,选择需要下载的版本进行下载,页面如下: 二.MYSQL 配置 下载完成后,它是一个zip文件,把它放到想要放置的位置,如D 盘,用解压软件解压到当前文件夹. 1.打开我们解压后的文件夹,就是D盘下的mysql-5.7.20-winx64 文件夹,在m