热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Master-MasterMySQL复制安装配置试验_MySQL

一、架构二、安装Mysqlserver下面以在DB1(192168010)的配置为例,DB2的配置基本一样,只要修改mycnf中的server_id21安装mysql-serverdb1apt-getinsta

一、 架构 \

二、 安装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 root@192.168.0.11:/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.

root@192.168.0.11's password:

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

(db1):/tmp#

2) 导入DB2

(db2)# mysql -u root -p

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 root@192.168.0.11:/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配置完全成功。

推荐阅读
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • PHP函数实现分页含文本分页和数字分页【PHP】
    后端开发|php教程PHP,分页后端开发-php教程最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。影视网源码带充值系统,vscode配置根 ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • 下载地址http:www.kbengine.org这货不错安装在Linux上安装(CentosDebianUbuntuetc.)服务端,请在终端输入:pythonkbenginek ... [详细]
  • 新新于2005-09-1415:02:23发表:利用chbg程序动态制作屏保XScreenSaver是一个开放的框架,就像一个服务器,任何一个可以在根窗 ... [详细]
author-avatar
手机用户2502886741
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有