centos6.5下mysql-5.6.19数据库安装、优化、互为主从 mysql集群 高可用

mysql互为主从环境介绍:

系统:centos6.5_64_mini
mysql版本:mysql-5.6.19
实验节点如下:

节点一:192.168.100.21
节点二:192.168.100.22
 
第一部分安装需要用到的库并删除自带mysql (节点一和二)

#  yum -y install gcc gcc-c++ ncurses ncurses-devel openssl openssl-devel cmake perl lsof wget bison
#  rpm -qa|grep mysql
#  rpm -e --allmatches --nodeps mysql-libs-5.1.71-1.el6.x86_64
 
第二部分MYSQL的安装(节点一和二)

1:创建MySQL数据库存放目录、配置用户和用户组
#  /usr/sbin/groupadd mysql
#  /usr/sbin/useradd -s /sbin/nologin -M -g mysql mysql
#  mkdir -p /yunwei8/mysql/data/
#  chown -R mysql:mysql /yunwei8/mysql/
 
2:创建软件下载目录,把所需软件下载

#  mkdir /yunwei8/soft
#  cd /yunwei8/soft
#  wget http://down.yunwei8.com/soft/linux/mysql-5.6.19.tar.gz
#  wget http://down.yunwei8.com/soft/linux/libunwind-1.1.tar.gz
#  wget http://down.yunwei8.com/soft/linux/gperftools-2.2.tar.gz
 
3:安装mysql-5.6.19

#  tar zxvf mysql-5.6.19.tar.gz
#  cd mysql-5.6.19
#  cmake -DCMAKE_INSTALL_PREFIX=/yunwei8/server/mysql -DMYSQL_DATADIR=/yunwei8/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=on
#  make
#  make install
#  chmod +w /yunwei8/server/mysql
#  chown -R mysql:mysql /yunwei8/server/mysql/
 
4:创建软连接

#  ln -s /yunwei8/server/mysql/lib/lib* /usr/lib/
 
5:创建my.cnf配置文件,并修改:

设置Mysql
#  cp /yunwei8/server/mysql/support-files/my-default.cnf /etc/my.cnf
#  vi /etc/my.cnf
 
在[mysqld]下添如下行
character-set-server = utf8
default-storage-engine = MyISAM
basedir = /yunwei8/server/mysql
datadir = /yunwei8/mysql/data
log-error = /yunwei8/mysql/mysql_error.log
pid-file = /yunwei8/mysql/mysql.pid
max_allowed_packet = 32M
explicit_defaults_for_timestamp = true
 
6:以mysql用户帐号的身份建立数据表:

#  /yunwei8/server/mysql/scripts/mysql_install_db --basedir=/yunwei8/server/mysql --datadir=/yunwei8/mysql/data --user=mysql
 
7:设置mysql开机自动启动服务

#  cp /yunwei8/server/mysql/support-files/mysql.server /etc/init.d/mysqld
#  chkconfig --add mysqld
#  chkconfig --level 345 mysqld on
 
8:修改服务配置文件

#  vi /etc/init.d/mysqld
 
根据设定需要,修改mysqld文件中的下面两项
basedir=/yunwei8/server/mysql
datadir=/yunwei8/mysql/data
 
9:启动mysqld服务

#  service mysqld start
 
10:通过命令行登录管理MySQL服务器并设置root密码(提示输入密码时直接回车):(节点一和二)
#  /yunwei8/server/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
#  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('000000');
 
退出mysql
#  mysql> exit
 
11:软连接mysql
#  ln -s /yunwei8/server/mysql/bin/mysql /usr/bin
 
12:尝试用root连接mysql
#  mysql -u root -p
 
成功登录后查看状态
#  mysql> status;
 
第三部分:mysql优化(节点一和二)

为MySQL添加TCMalloc库的安装步骤(Linux环境):
1:64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
首先安装libunwind-1.1

#  cd /yunwei8/soft
#  tar zxvf libunwind-1.1.tar.gz
#  cd libunwind-1.1
#  CFLAGS=-fPIC ./configure
#  make CFLAGS=-fPIC
#  make CFLAGS=-fPIC install
 
2:安装google-perftools:

#  cd /yunwei8/soft
#  tar zxvf gperftools-2.2.tar.gz
#  cd gperftools-2.2/
#  ./configure
#  make && make install
#  echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
#  /sbin/ldconfig
 
3:修改MySQL启动脚本(根据你的MySQL安装位置而定)

#  vi /yunwei8/server/mysql/bin/mysqld_safe
 
在# executing mysqld_safe的下一行,加上:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
 
保存后退出,然后重启MySQL服务器。
#  service mysqld restart
 
4:使用lsof命令查看tcmalloc是否起效:
#  /usr/sbin/lsof -n | grep tcmalloc
 
如果发现以下信息,说明tcmalloc已经起效:
mysqld    11227 mysql  mem       REG                8,1  2171746      18287 /usr/local/lib/libtcmalloc.so.4.1.2
 
第四部分:mysql互为主从配置
第一步防火墙设置(节点一和二)
端口开放
#  /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
 
然后保存:
#  /etc/rc.d/init.d/iptables save
 
第二步配置mysql互为主从
1:登录mysql数据库(节点一和二)
#  mysql-u root -p
 
2:建立需要同步的数据库(节点一和二)
#  mysql> create database yunwei8;
 
3:添加一个远程用户,名为yunwei8密码为123456,并且只能对yunwei8数据库有权限(节点一和二)
#  mysql> GRANT ALL PRIVILEGES ON yunwei8.* TO yunwei8@"%" IDENTIFIED BY '123456';
 
4:修改/etc/my.cnf文件(节点一)
#  rm -rf /etc/my.cnf
#  vi /etc/my.cnf
添加如下配置代码
[client]
default-character-set = utf8
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
character-set-server = utf8
default-storage-engine = MyISAM
basedir = /yunwei8/server/mysql
datadir = /yunwei8/mysql/data
log-error = /yunwei8/mysql/mysql_error.log
pid-file = /yunwei8/mysql/mysql.pid
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
log-bin=mysql-bin
server-id = 1
binlog-do-db=yunwei8
replicate-do-db=yunwei8
binlog-ignore-db=mysql
replicate-ignore-db=mysql
sync_binlog=1
auto_increment_increment = 2
auto_increment_offset = 1
log-slave-updates
slave-skip-errors=all
[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
 
5:修改/etc/my.cnf文件(节点二)
#  rm -rf /etc/my.cnf
#  vi /etc/my.cnf
添加如下配置代码
[client]
default-character-set = utf8
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
character-set-server = utf8
default-storage-engine = MyISAM
basedir = /yunwei8/server/mysql
datadir = /yunwei8/mysql/data
log-error = /yunwei8/mysql/mysql_error.log
pid-file = /yunwei8/mysql/mysql.pid
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
log-bin=mysql-bin
server-id       = 2
binlog-do-db=yunwei8
replicate-do-db=yunwei8
binlog-ignore-db=mysql
replicate-ignore-db=mysql
sync_binlog=1
auto_increment_offset = 2
auto_increment_increment = 2
log-slave-updates
slave-skip-errors=all

[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
 
6:重启两台服务器的mysql(节点一和二)
#  service mysqld restart
 
7:给两个节点授权同步账户, 赋予REPLICATION SLAVE权限(节点一和二)
#  mysql -u root -p
#  mysql> GRANT REPLICATION SLAVE ON *.* to 'abc'@'%' identified by 'abc';
 为abc用户赋予任何数据库中任何表上的REPLICATION SLAVE权限, 此用户可以在网络任意位置访问, 访问时以密码abc标记
 
8:开启一个权限跟ROOT一样的远程账户用于后期脚本监控(节点一和二)
#  GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY '123456';
 
9:锁表(锁表状态下不能退出SSH,否则会失败,使用SSH可以另外克隆一个)(节点一和二)
#  mysql -u root -p
#  mysql> FLUSH TABLES WITH READ LOCK;
 
10:查看节点一状态(记录二进制开始文件,位置)
#  mysql> show master status;
显示:
#  mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |     1051 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 
11:查看节点二状态(记录二进制开始文件,位置)
#  mysql> show master status;
显示:
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      764 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 
12:节点一连接节点二
#  mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.22',MASTER_USER='abc', MASTER_PASSWORD='abc',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=764;
 
12.1:开启节点一同步进程
#  mysql> START SLAVE;
 
12.2:查看节点一同步状态是否正常
#  mysql> SHOW SLAVE STATUS\G;
 
 *************************** 1. row ***************************
……………………(省略部分)
Slave_IO_Running: Yes  //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

13:节点二连接节点一
#  mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.21',MASTER_USER='abc', MASTER_PASSWORD='abc',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1051;
 
13.1开启节点二同步进程
#  mysql> START SLAVE;
 
13.2查看节点二同步状态是否正常
#  mysql> SHOW SLAVE STATUS\G;
 
 *************************** 1. row ***************************
……………………(省略部分)
Slave_IO_Running: Yes  //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

14:解锁节点一和节点二
#  mysql> UNLOCK TABLES;

15:退出节点一和节点二的mysql,至此mysql的互为主从已经实现了
#  mysql> exit;
 
 
第五部分:mysql配置文件详解
[client]
#设置mysql客户端默认字符集
default-character-set = utf8
 
#指定默认端口
port  = 3306
 
#是个UNIX域socket文件,这种socket效率比基于TCP/IP的socket高,但是缺点是不能跨机器连接,mysql提供这个东西是为了改善本地连接的速度
socket  = /tmp/mysql.sock

[mysqld]
#服务端使用的字符集
character-set-server = utf8
 
#创建新表时将使用的默认存储引擎
default-storage-engine = MyISAM
 
#基准路径,其他路径都相对于这个路径
basedir = /yunwi8/server/mysql
 
# mysql数据库文件所在目录
datadir = /yunwei8/mysql/data
 
#错误日志存放路径
log-error = /yunwei8/mysql/mysql_error.log
 
#进程存放位置
pid-file = /yunwei8/mysql/mysql.pid
port  = 3306
socket  = /tmp/mysql.sock
 
#不使用系统锁定,要使用myisamchk,必须关闭服务器
skip-external-locking
 
#myisam索引buffer,只有key没有data
key_buffer_size = 384M
 
#增长到max_allowed_packet字节
max_allowed_packet = 32M
 
#主要用于设置table高速缓存的数量
table_open_cache = 512
 
#排序buffer大小;线程级别
sort_buffer_size = 2M
 
#以全表扫描(Sequential Scan)方式扫描数据的buffer大小 ;线程级别
read_buffer_size = 2M
 
#MyISAM以索引扫描(Random Scan)方式扫描数据的buffer大小 ;线程级别
read_rnd_buffer_size = 8M
 
#MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区
myisam_sort_buffer_size = 64M
 
#线程缓存
thread_cache_size = 8
 
#查询缓存大小
query_cache_size = 32M
 
#同时运行的线程的数据 此处最好为CPU个数两倍。本机配置为CPU的个数
thread_concurrency = 8
 
#以下为互为主从配置选项
#启用二进制日志
log-bin=mysql-bin
 
#表示是本机的序号为1,一般来讲就是master的意思。
server-id = 1
 
#要记录日志的数据库,如果需要多个重复设置这个选项即可
binlog-do-db=yunwei8
 
#需要复制的数据库名,如果需要多个数据库,重复设置这个选项即可
replicate-do-db=yunwei8
 
#不要记录日志的数据库名,如果需要多个重复设置这个选项即可
binlog-ignore-db=mysql
 
#不需要复制的数据库名,如果需要多个数据库,重复设置这个选项即可
replicate-ignore-db=mysql
 
#默认情况下,并不是每次写入时都将binlog与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能binlog中最后的语句丢失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘同步。
sync_binlog=1
 
#字段一次递增多少
auto_increment_increment = 2
 
#自增字段的起始值,这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID
auto_increment_offset = 1
 
#表示如果一个MASTER挂掉的话,另外一个马上接管;一定要加上,否则不会把更新的记录写到二进制文件里
log-slave-updates
 
#跳过错误,继续执行复制操作
slave-skip-errors=all
[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
#这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。
no-auto-rehash

时间: 2025-01-02 06:55:21

centos6.5下mysql-5.6.19数据库安装、优化、互为主从 mysql集群 高可用的相关文章

Mysql最新版本的数据库安装教程(5.7)_Mysql

默认情况,在CentOS 6.8 下通过yum安装的是5.1.73版本,现在需求是安装5.7版本. Mysql官方网站:http://www.mysql.com Mysql说明文档:http://dev.mysql.com/doc/ --------------------------------------------------------------------------------------------------- 一.更改数据库安装源 在mysql官方网站上找到下载页面,选择其中

数据库水平切分的原理探讨、设计思路--数据库分库,分表,集群,负载均衡器

本文转载:http://www.cnblogs.com/olartan/archive/2009/12/02/1615131.html 第1章  引言 数据量巨大时,首先把多表分算到不同的DB中,然后把数据根据关键列,分布到不同的数据库中.库分布以后,系统的查询,io等操作都可以有多个机器组成的群组共同完成了.本文主要就是针对,海量数据库,进行分库.分表.负载均衡原理,进行探讨,并提出解决方案. 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每

DB 数据库水平切分的实现原理解析---分库,分表,主从,集群

第1章  引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通过数据切分来提高网站性能,横向扩展数据层 已经成为架构研发人员首选的方式.水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失.通过负载均衡策略,有效的降低了单台 机器的访问负载,降低了宕机的可能性:通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题:通过读

Mailbox:日支撑过亿信息数据库的性能调优及集群迁移

在Mailbox快速扩展过程中,其中一个性能问题就是MongoDB的数据库级别写锁,在锁等待过程中耗费的时间,直接反应到用户使用服务过程中 的延时.为了解决这个长期存在的问题,我们决定将一个常用的MongoDB集合(储存了邮件相关数据)迁移到独立的集群上.根据我们推断,这将减少50% 的锁等待时间:同时,我们还可以添加更多的分片,我们还期望可以独立的优化及管理不同类型数据. 我们首先从MongoDB文档开始,很快的就发现了 cloneCollection命令.然而随后悲剧的发现,它不可以在分片集

在linux下,怎么创建多个tomcat,也就是说创建一个tomcat集群,分散一个tomcat的压力

问题描述 要求就是题目说的,不知道我说明白了没,就是建立一个tomcat集群,分散一个tomcat压力.请高手指点一下!! 解决方案 解决方案二:使用apache,用google搜索一下apahcetomcat群集,很多帖子说明怎么做的.解决方案三:具体忘了,大概就是server.xml中修改配置,windows和linux没有多大的不同

Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置的详细方法_Linux

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装,如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数据的存储呀!!!没错,咱们还差一个最重要的软件没有装,也就是数据库!!!如果没有了数据库,咱们做项目简直是空想

CentOS6.4下Mysql数据库的安装与配置

CentOS6CentOS 自己有修改了一些mysql启动云间的 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程

Mysql数据库性能优化一_Mysql

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库. mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. Mysql数据库的优化技术 对mysql优化是

基于MySQL的数据库集群系统的实现

mysql|数据|数据库 您的WebApp系统是否正在使用一个MySQL的数据库系统?您的客户是不是总是抱怨页面结果反馈的非常慢?您的MySQL系统的负载是不是总是维持在一个非常高的状态下?本文将为您提供一个分担MySQL系统的负载的方法,以及由此派生出来的一个MySQL-HA-Proxy的开发项目.使用本文提供的方法,您将以最小的源代码改动,获得MySQL系统的高效运转. 第一节 数据库集群技术的现状 目前数据库集群系统应用得比较成功,应用范围比较广泛的是:Oracle公司的Oracle9与I