本文介绍MySQL的Master/Slave群集安装和配置,版本号安装最新的稳定版GA 5.6.19。

为了支持有限HA。我们用Master/Slave读写简单孤立的集群。有限HA这是当Master不可用,数据不会丢失。但在Master写的,必须手工处理故障。假设要支持更高的可用性。能够使用两台Master来做热切换。

Master和Slave的MySQL安装是同样的,仅仅是my.cnf的配置不同,须要配置二进制日志文件复制。

没有特殊说明,命名中带#的为root用户操作。带$的为mysql Linux用户的操作。

安装准备

1. 在安装MySQL前,须要确认以下的系统软件已经安装在Linux中。

软件名称

软件描写叙述

gcc-4.4.7

编程语言编译器

gcc-c++-4.4.7

C++语言编译器

cmake-2.6.4-5

跨平台的开源构建系统

ncurses-devel-5.7-3.20090208

控制打印控制台屏幕

2. 创建mysql Linux用户

# groupadd mysql

# useradd -g mysql mysql

# passwd mysql

3. 准备安装文件夹

创建MySQL安装文件夹,并赋权限给mysql用户:

# mkdir /usr/local/mysql-5.6.19

# chown mysql:mysql /usr/local/mysql-5.6.19

# chmod -R 770 /usr/local/mysql-5.6.19

4. 创建MySQL数据存储文件夹:

# mkdir /data

# mkdir /data/mysql

# chown mysql:mysql /data/mysql

5. 授权MySQL解压源代码文件夹/usr/local/src文件夹的可运行权限给全部用户:

# chmod -R 757 /usr/local/src

安装MySQL

1. 解压缩安装包:

$ cd /usr/local/src

$ tar -xzvf mysql-5.6.19.tar.gz

2. 配置MySQL编译參数

$ cd /usr/local/src/mysql-5.6.19

$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.19\

-DMYSQL_DATADIR=$MYSQL_DATA_PATH\

-DSYSCONFDIR=/usr/local/mysql-5.6.19/conf\

-DDEFAULT_CHARSET=utf8\

-DDEFAULT_COLLATION=utf8_general_ci\

-DWITH_READLINE=1\

-DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

备注:

-DCMAKE_INSTALL_PREFIX: 配置MySQL的安装文件夹。

-DMYSQL_DATADIR: 配置MySQL的数据文件夹。

-DSYSCONFDIR:  配置MySQL的配置文件文件夹。

-DDEFAULT_CHARSET: 默认字符集。

-DDEFAULT_COLLATION:设定默认语言的排序规则。

-DWITH_READLINE:支持批量导入mysql数据。

-DWITH_INNOBASE_STORAGE_ENGINE:使用INNOBASE存储引擎。

-DWITH_ARCHIVE_STORAGE_ENGINE:常应用于日志记录和聚合分析,不支持索引。

-DWITH_BLACKHOLE_STORAGE_ENGINE:黑洞存储引擎。

-DWITH_PERFSCHEMA_STORAGE_ENGINE:性能模式引擎。

3. 运行make

$ make

$ make install

4. 改动myql用户的环境变量,添加MYSQL_HOME。并把bin加到PATH:

$ vi ~/.bash_profile

在文件里添加蓝色字体部分:

# User specific environment and startup programs

# MySQL home文件夹

export MYSQL_HOME=/usr/local/mysql-5.6.19

PATH=$PATH:$HOME/bin:$MYSQL_HOME/bin

export PATH

$ source ~/.bash_profile

初始化MySQL

1. 安装service脚本

# cp /usr/local/mysql-5.6.19/support-files/mysql.server/etc/init.d/mysqld

# chown mysql:mysql/etc/init.d/mysqld

# chmod 700 /etc/init.d/mysqld

2. 创建mysql权限数据库

$ $MYSQL_HOME/scripts/mysql_install_db--basedir=$MYSQL_HOME --datadir=/data/mysql

3. 创建PID文件文件夹

$ mkdir $MYSQL_HOME/var

4. 为master配置my.cnf

my.cnf格式不对,非常easy在启动时错误,最好在原有文件的基础上通过vi工具在linux上改动。

假设文件已经损坏,能够通过默认的模板中拷贝:

$ cp $MYSQL_HOME/support-files/my-default.cnf$MYSQL_HOME/my.cnf

编辑my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件里添加蓝色字体部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

log_bin=master-bin

log_bin_index=master-bin.index

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first master server id

server_id = 1

socket = /tmp/mysql.sock

pid-file =  /usr/local/mysql-5.6.19/var/master.pid

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

5. 为slave配置my.cnf

和master的配置文件一样进行改动。但注意文件里的log文件名称、datadir和server_id等内容不同。

编辑my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件里添加蓝色字体部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

# Replication

# relay-log=slave-relay-bin

# relay-log-index=slave-relay-bin.index

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first slave server id of master 1

server_id = 101

socket = /tmp/mysql.sock

pid-file =  /usr/local/mysql-5.6.19/var/slave.pid

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

6. 启动MySQL

启动和停止master和slave都全然一样。

$ service mysqldstart

通过以下命令查看是否启动成功:

$ service mysqldstatus

7. 停止MySQL

$ service mysqld stop

管理MySQL安全性

默认MySQL的root的用户password为空。为了提高安全性,应该设置root用户一个安全的password。

在server上通过mysql用户打开MySQLclient:

$ mysql –u root

设置一个安全的password:

mysql> SET PASSWORD FORroot@localhost=PASSWORD('secret');

配置Master和Slave之间的复制

1. 创建运行复制的MySQL用户

在Master上创建一个复制用户,当中secret为用户的password:

mysql> CREATEUSER repl_user IDENTIFIED BY 'secret';

并赋给复制权限:

mysql>GRANTREPLICATION SLAVE ON *.* TO repl_user;

2. 锁定Master并获取二进制日志位置值

获取读锁:

mysql> FLUSH TABLES WITHREAD LOCK;

显示当前二进制文件名称及位置值:

mysql> SHOW MASTER STATUS;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lsYmVydHpob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

3. 通过mysqldump工具获取Master数据快照

在另外一个会话中在Master上运行:

$ mysqldump -u root-p --all-databases --master-data > data_dump.sql

运行后。保存在当前文件夹中。

4. 释放Master上的读锁

在获取读锁的会话中。运行释放锁命令:

mysql> UNLOCK TABLES;

5. 导入dump数据到Slave中

通过scp拷贝data_dump.sql到Slave的机器上。

$ scp data_dump.sqlmysql@<ip of slave>:/home/mysql

在Slave上通过以下的命令导入到Slave的MySQL中。

$ mysql –u root -p

mysql>source data_dump.sql;

6. 配置Master和Slave之间的复制

mysql> CHANGE MASTER TO MASTER_HOST='<ip
or hostame of master>
',

MASTER_USER='repl_user',

MASTER_PASSWORD='secret',

MASTER_PORT = 3306,

MASTER_LOG_FILE='master-bin.000003',

MASTER_LOG_POS=881;

上面的MASTER_LOG_FILE和MASTER_LOG_POS须要配置6.2中查询到的信息。<ipor hostame of master>是Master的IP或主机名。

启动Slave:

mysql> START SLAVE;

7. 验证Master和Slave的状态

在Master上运行:

mysql> SHOW MASTER STATUS;

在Slave上运行:

mysql> SHOW SLAVE STATUS;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lsYmVydHpob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

上述资料显示,无论是什么错误,Slave_IO_State信息‘Waitigfor master to send event’,说明复制连接配置OK。

至今,二MySQL的Master/Slave集群模式已成功部署。能够Master运行数据更新操作,研究发现,正常的副本Slave上。

MySQL的Master/Slave群集安装和配置的更多相关文章

  1. mysql数据库在Linux下安装与配置

      mysql是一种开放源代码的关系型数据库系统(RDBMS),使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理. 由于mysql的开源,因此任何人都可以在General Publ ...

  2. mysql数据库在windows下安装与配置

      mysql是一种开源源代码的关系型数据库系统(RDBMS),使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Pu ...

  3. mysql (master/slave)复制原理及配置

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  4. MySQL半同步复制的安装和配置

    (1)检查master/slave是否支持动态加载插件 > show variables like 'have_dynamic_loading'; +---------------------- ...

  5. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  6. MySQL数据库学习笔记(一)----MySQL 5.6.21的安装和配置(setup版)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)

    [需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...

  8. mysql 5.6.20的安装、配置服务、设置编码格式

    一.安装 安装环境        系统:Window 32        版本:Mysql 5.6.20 1. 首先从官网上http://dev.mysql.com/downloads/mysql/ ...

  9. MySQL数据库学习二 MSQL安装和配置

    2.1 下载和安装MySQL软件 2.1.1 基于客户端/服务器(C/S)的数据库管理系统 服务器:MySQL数据库管理系统 客户端:操作MySQL服务器 2.1.2 MySQL的各种版本 社区版(C ...

随机推荐

  1. Android智能手机屏蔽电话与屏蔽安装软件功能

    近期做一些项目.须要对手机进行屏蔽自己的固有的功能.在此记录. Android屏蔽电话功能主要是卸载掉Phone.apk. 屏蔽安装软件功能主要是卸载掉PackageInstall.apk 以下以三星 ...

  2. [置顶] 殊途同归——总结asp.net

    怀着期望,忐忑的心情看完了asp.net的一部分视频,这部分的学习也到了一个段落,颗粒归仓的工作还是要做的,但是有什么比一张图来得更直观有效呢? 先来张图,这次真的是有图有真相: 通过asp.net的 ...

  3. 总线接口与计算机通信(三)UART起止式异步通用串行数据总线

    串口简介 1. 什么是串口? 串口是计算机上一种非常通用的设备通信的协议.串口通信的概念非常简单,串口按位(bit) 发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送 ...

  4. Oracle基础知识笔记(10) 约束

    表尽管建立完毕了,可是表中的数据是否合法并不能有所检查,而假设要想针对于表中的数据做一些过滤的话,则能够通过约束完毕,约束的主要功能是保证表中的数据合法性,依照约束的分类,一共同拥有五种约束:非空约束 ...

  5. android 设置字体颜色、EditText自己主动输入转换成大写字母的多种方式

    在TextView上面设置某一个字的字体颜色为指定颜色时,能够通过java类SpannableString类和Html语言来实现. (一)SpannableString类方式 private void ...

  6. windows live writer插件说明文档(附录网盘地址)

    百度云地址:http://pan.baidu.com/s/1hqnjzjY 1.Screen Capture tool 用于直接在WLWriter中进行截图的一个插件,要配合SnagIt 这个软件使用 ...

  7. Delphi中JSon SuperObject 使用:数据集与JSON对象互转

    在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包 ...

  8. linux配置本地tomcat应用80端口转发

    场景: 本地部署tomcat到8080端口,并期望本地访问80端口来访问本地tomcat. 结论: 使用linux下的iptables工具实现端口转发功能. 具体为 现取得root权限 执行iptab ...

  9. HDU 2152 Fruit (母函数)

    # include<stdio.h> # include <algorithm> # include <string.h> # include <iostre ...

  10. Swift编程语言学习3.1排列

    Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...