MySQL 主从复制配置 + MySQL Router 部署使用测试

1、MySQLDB1  192.168.1.41  (MySQL 主节点)

2、MySQLDB2  192.168.1.42  (MySQL从节点)

3、MySQLDB3  192.168.1.43  (MySQL从节点)

4、MySQLRouter  192.168.1.47  (MySQLRouter服务节点)

软件版本说明:

1、操作系统  CentOS6.6_x86_64

2、MySQLServer  5.7.16

3、MySQLRouter  2.0.4

一、部署MySQL主从复制

----------------------- 复制创建及配置主要步骤 -----------------------------------------

1、Master 端启用二进制日志,指定唯一的 server_id

2、Slave 端配置唯一的 server_id

3、Master 端创建复制专用帐号

4、记录 Master 端日志信息并创建镜像

5、配置 Slave 端的连接

-------------------------------------------------------------------------------------------

1、系统平台: CentOS 6.6 (64位)

2、软件版本:mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

3、为了模拟现实环境情况做如下前提条件假设:

     1)、在搭建Master和Salve1时为一个全新的环境,即主数据库中无任何数据,Master和Slave1均为新环境部署

     2)、在现有复制环境(Master+Slave1)中新增一个Slave2节点,现有复制环境中已有数据存在和修改过程执行

     3)、Master节点的端口为3306,Slave1节点端口为3306,Slave2节点端口为3306

     4)、为了部署方便,安装包使用二进制程序进行部署

-----------------------------------------  部署实现过程  -----------------------------------------------

1、用户及相关目录创建

--MySQLDB1 节点

[root@mysqldb1 ~]# groupadd mysql

[root@mysqldb1 ~]# useradd mysql -g mysql

[root@mysqldb1 ~]# mkdir /mysql

[root@mysqldb1 ~]# mkdir /mytmp

[root@mysqldb1 ~]# passwd mysql

--MySQLDB2 节点

[root@mysqldb2 ~]# groupadd mysql

[root@mysqldb2 ~]# useradd mysql -g mysql

[root@mysqldb2 ~]# mkdir /mysql

[root@mysqldb2 ~]# mkdir /mytmp

[root@mysqldb2 ~]# passwd mysql

--MySQLDB3 节点

[root@mysqldb3 ~]# groupadd mysql

[root@mysqldb3 ~]# useradd mysql -g mysql

[root@mysqldb3 ~]# mkdir /mysql

[root@mysqldb3 ~]# mkdir /mytmp

[root@mysqldb3 ~]# passwd mysql

2、设置用户操作系统资源的限制

--以避免在启动mysql服务是会报:

2017-04-11 17:27:03 3175 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)

2017-04-11 17:27:03 3175 [Warning] Buffered warning: Changed limits: table_open_cache: 431 (requested 2000)

之类的警告信息

[root@mysqla ~]# vi /etc/security/limits.conf

在文件的最后添加如下内容

mysql soft nproc 2047

mysql hard nproc 16384

mysql soft nofile 1024

mysql hard nofile 65535

3、解压上传的二进制安装包程序并复制到目标目录下

--MySQLDB1 节点

[root@mysqldb1 mytmp]# tar -xzvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 

[root@mysqldb1 mytmp]# mv mysql-5.7.16-linux-glibc2.5-x86_64 /mysql/3306

--MySQLDB2 节点

[root@mysqldb2 mytmp]# tar -xzvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 

[root@mysqldb2 mytmp]# mv mysql-5.7.16-linux-glibc2.5-x86_64 /mysql/3306

--MySQLDB3 节点

[root@mysqldb3 mytmp]# tar -xzvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 

[root@mysqldb3 mytmp]# mv mysql-5.7.16-linux-glibc2.5-x86_64 /mysql/3306

4、便于方便管理创建单独的日志文件存放目录

--MySQLDB1 节点

[root@mysqldb1 3306]# mkdir logs

--MySQLDB2 节点

[root@mysqldb2 3306]# mkdir logs

--MySQLDB3 节点

[root@mysqldb3 3306]# mkdir logs

5、目录权限修改

--MySQLDB1 节点

[root@mysdb1 ~]# chown -R mysql:mysql /mysql

--MySQLDB2 节点

[root@mysqldb2 ~]# chown -R mysql:mysql /mysql

--MySQLDB3 节点

[root@mysqldb3 ~]# chown -R mysql:mysql /mysql

6、数据库初始化安装

--MySQLDB1 节点

[root@mysqldb1 ~]# su - mysql

[mysql@mysqldb1 ~]$ cd /mysql/3306

[mysql@mysqldb1 3306]$ ./bin/mysqld  --initialize --user=mysql --basedir=/mysql/3306 --datadir=/mysql/3306/data

--MySQLDB2 节点

[root@mysqldb2 ~]# su - mysql

[mysql@mysqldb2 ~]$ cd /mysql/3306

[mysql@mysqldb2 3306]$ ./bin/mysqld  --initialize --user=mysql --basedir=/mysql/3306 --datadir=/mysql/3306/data

--MySQLDB3 节点

[root@mysqldb3 ~]# su - mysql

[mysql@mysqldb3 ~]$ cd /mysql/3306

[mysql@mysqldb3 3306]$ ./bin/mysqld  --initialize --user=mysql --basedir=/mysql/3306 --datadir=/mysql/3306/data

注:1、数据库初始化的命令与5.6版本有所不同

        2、数据库初始化完后,会自动为 root 用户生成一个密码,记住该密码,

             不过该密码很快很过期,所以需要在配置文件添加 skip-grant-tables 来启动数据库实例

      3、安装aio依赖包: yum  install  libaio*

7、参数文件配置

--MySQLDB1 节点  /mysql/3306/my.cnf

[client]

default_character_set = utf8

port = 3306

socket = /tmp/mysql3306.sock

[mysqld]

basedir = /mysql/3306

datadir = /mysql/3306/data

user = mysql

port = 3306

server_id = 13306

character_set_server = utf8

socket = /tmp/mysql3306.sock

pid-file = /tmp/mysql3306.pid

log-bin = /mysql/3306/logs/bin_log

relay-log = /mysql/3306/logs/relay_log

log-error = /mysql/3306/logs/mysql_error.log

explicit_defaults_for_timestamp = true

expire_logs_days = 10

max_binlog_size = 100M

binlog-do-db = testdb   #复制数据库名称

binlog-ignore-db = mysql

--MySQLDB2 节点 /mysql/3306/my.cnf

[client]

default_character_set = utf8

port = 3306

socket = /tmp/mysql3306.sock

[mysqld]

basedir = /mysql/3306

datadir = /mysql/3306/data

user = mysql

port = 3306

server_id = 23306

character_set_server = utf8

socket = /tmp/mysql3306.sock

pid-file = /tmp/mysql3306.pid

log-bin = /mysql/3306/logs/bin_log

relay-log = /mysql/3306/logs/relay_log

log-error = /mysql/3306/logs/mysql_error.log

explicit_defaults_for_timestamp = true

expire_logs_days = 10

max_binlog_size = 100M

--MySQLDB3 节点 /mysql/3306/my.cnf

[client]

default_character_set = utf8

port = 3306

socket = /tmp/mysql3306.sock

[mysqld]

basedir = /mysql/3306

datadir = /mysql/3306/data

user = mysql

port = 3306

server_id = 33306

character_set_server = utf8

socket = /tmp/mysql3306.sock

pid-file = /tmp/mysql3306.pid

log-bin = /mysql/3306/logs/bin_log

relay-log = /mysql/3306/logs/relay_log

log-error = /mysql/3306/logs/mysql_error.log

explicit_defaults_for_timestamp = true

expire_logs_days = 10

max_binlog_size = 100M

8、清理配置参数文件

在Linux平台下,mysql程序默认会按照以下顺序扫描路径寻找配置文件

/etc/my.cnf

/etc/mysql/my.cnf

SYSCONFDIR/my.cnf   #通过CMake源代码编译时指定的SYSCONFDIR的参数指定的路径

$MYSQL_HOME/my.cnf  #MYSQL_HOME环境变量所在路径,即mysql安装路径(basedir)

~/.my.cnf  #~表示到当更前用户根目录下寻找

通过命令  find  /  -iname  my.cnf  查询配置文件的存在性,仅保留 MYSQL_HOME/my.cnf 配置文件。

注:使用如下命令可查看mysql实例的配置文件搜索顺序

[root@mysqldb1 bin]# mysql --help | grep '/my.cnf'

9、配置启动脚本

--MySQLDB1 节点实例

[root@mysqla 3306]# cp support-files/mysql.server /etc/init.d/mysql3306

[root@mysqla 3306]# vi /etc/init.d/mysql3306

将如下内容

#basedir=...

#datadir=...

修改为:

basedir=/mysql/3306

datadir=/mysql/3306/data

--MySQLDB2 节点实例

[root@mysqlb 3306]# cp support-files/mysql.server /etc/init.d/mysql3306

[root@mysqlb 3306]# vi /etc/init.d/mysql3306

将如下内容

#basedir=...

#datadir=...

修改为:

basedir=/mysql/3306

datadir=/mysql/3306/data

--MySQLDB3 节点实例

[root@mysqlc 3306]# cp support-files/mysql.server /etc/init.d/mysql3306

[root@mysqlc 3306]# vi /etc/init.d/mysql3306

将如下内容

#basedir=...

#datadir=...

修改为:

basedir=/mysql/3306

datadir=/mysql/3306/data

10、数据库服务启动

--MySQLDB1 节点

[mysql@mysqldb1 ~]$ service  mysql3306  start

--MySQLDB2 节点

[mysql@mysqldb2 ~]$ service  mysql3306  start

--MySQLDB3 节点

[mysql@mysqldb3 ~]$ service  mysql3306  start

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6665a3b2ad5176e5ef7dd835fc0accde.html