本文介绍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. Java的位运算符具体解释实例——与(&amp;)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包含了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.以下 ...

  2. iPhone应用程序开发基础之一: IBOutlet与IBAction

    在图形界面编程时,解决的第一问题就是如何将静态界面与代码关联起来,或者说是代码如何与界面上的对象 通信, 代码如何操作界面上的对象.在iPhone平台上,引入了IBOutlet与IBAction.通过 ...

  3. c语言:union,大小端

    union: 不允许只用联合变量名作赋值或其它操作. 也不允许对联合变量作初始化赋值,赋值只能在程序中进行. 小端存储: 以字节为单位,低存低,高存高. 任何数据在内存中都是以二进制(1或着0)顺序存 ...

  4. 《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  5. perl 自动登陆网站发短信

    use LWP::UserAgent; use HTTP::Date qw(time2iso str2time time2iso time2isoz); use Net::Ping; use Sock ...

  6. CSS——float属性备忘笔记

    通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间.CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了 ...

  7. 利用VS2005进行dump文件调试(17篇博客)

    前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件.使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置.本文将讨论以下内容: 1.  程序编译选 ...

  8. UVA 10718 Bit Mask 贪心+位运算

    题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...

  9. Swift - 实现点击UITableView单元格时自动展开单元格

    下面是一个列表单元格cell的折叠展开效果的demo.当点击单元格时会展开该单元格,便于显示一些详情什么的.点击其他单元格原来的会关闭,同时有动画效果. 效果如如下:   代码如下: 1 2 3 4 ...

  10. iOS 使用UIBezierPath类实现随手画画板

    在上一篇文章中我介绍了 UIBezierPath类 介绍 ,下面这篇文章介绍一下如何通过这个类实现一个简单的随手画画板的简单程序demo,功能包括:划线(可以调整线条粗细,颜色),撤销笔画,回撤笔画, ...