码迷,mamicode.com
首页 > 数据库 > 详细

DRBD+Heartbeat+Mysql:配置mysql的高可用

时间:2015-07-02 17:50:33      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:mysql drbd heartbeat 高可用

DRBD+Heartbeat+Mysql:配置mysql的高可用

说明:

    今天接着研究DRBD的第二个应用,利用DRBD+Heartbeat+Mysql:配置mysql的高可用




环境:

[root@dbm137 ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m

[root@dbm137 ~]# uname -r
2.6.32-358.el6.i686
dbm137192.168.186.137dbm137.51.comprimaryDRBD+Heartbeat+Mysql
dbm138192.168.186.138dbm138.51.comsecondaryDRBD+Heartbeat+Mysql
vip192.168.186.200





准备工作和安装DRBD:

    http://732233048.blog.51cto.com/9323668/1665979





安装配置mysql:

    安装mysql:(dbm137,dbm138)

##安装依赖包:
[root@dbm ~]# yum -y install gcc gcc-c++  autoconf automake  bison  ncurses-devel libtool-ltdl-devel* cmake make
[root@dbm ~]# mkdir -p /opt/mysql/data      #创建数据库的临时数据目录
[root@dbm ~]# cd /usr/local/src/
[root@dbm src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.22.tar.gz
[root@dbm src]# tar -zxf mysql-5.6.22.tar.gz
[root@dbm src]# cd mysql-5.6.22
[root@dbm mysql-5.6.22]# cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/opt/mysql/data -DSYSCONFDIR=/usr/local/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1  -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DEXTRA_CHARSETS:STRING=utf8,gbk  -DWITH_DEBUG=0
##注意-DCMAKE_INSTALL_PREFIX,-DMYSQL_DATADIR和-DSYSCONFDIR选项的值
[root@dbm mysql-5.6.22]# make              #这个过程可能会很久
[root@dbm mysql-5.6.22]# make install
[root@dbm ~]# groupadd mysql            #创建mysql用户组
[root@dbm ~]# useradd -s /sbin/nologin -g mysql mysql
[root@dbm ~]# chown -R mysql.mysql /opt/mysql    #授权数据目录
[root@dbm ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/opt/mysql/data --defaults-file=/usr/local/mysql/my.cnf --user=mysql      #初始化数据库


    配置mysql:

        dbm137(Primary)

[root@dbm137 ~]# mount /dev/drbd0 /data/        #配置前先把DRBD设备挂载
[root@dbm137 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  3.4G   14G  20% /
tmpfs                  58M     0   58M   0% /dev/shm
/dev/sda1             477M   43M  409M  10% /boot
/dev/drbd0            8.8G   21M  8.3G   1% /data
[root@dbm137 ~]# mkdir -p /data/mysql/binlog       #创建二进制日志目录
[root@dbm137 ~]# mkdir -p /data/mysql/data         #创建数据库的数据目录
[root@dbm137 ~]# cp -a /opt/mysql/data/* /data/mysql/data/      #拷贝数据到数据库目录
[root@dbm137 ~]# chown -R mysql.mysql /data/mysql/    #授权mysql目录
[root@dbm137 ~]# cd /data/mysql/data/
[root@dbm137 data]# ll
total 110604
-rw-rw---- 1 mysql mysql 12582912 Jul  2 12:00 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jul  2 12:00 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jul  2 12:00 ib_logfile1
drwx------ 2 mysql mysql     4096 Jul  2 12:00 mysql
drwx------ 2 mysql mysql     4096 Jul  2 12:00 performance_schema
drwx------ 2 mysql mysql     4096 Jul  2 12:00 test
[root@dbm137 ~]# mv /usr/local/mysql/my.cnf /usr/local/mysql/my.cnf.old
[root@dbm137 ~]# vi /usr/local/mysql/my.cnf         #修改配置文件
[mysqld]
basedir = /usr/local/mysql  #安装路径
datadir = /data/mysql/data  #数据目录
port = 3306
server_id = 1               #此值不要去修改
pid-file = /data/mysql/data/mysql.pid  #进程文件
socket = /var/lib/mysql/mysql.sock
default_storage_engine = InnoDB
log-bin = /data/mysql/binlog/mysql-binlog  #二进制文件
expire_logs_days = 14
max_binlog_size = 5G
binlog_cache_size = 10M
max_binlog_cache_size = 20M
slow_query_log
long_query_time = 2
slow_query_log_file = /data/mysql/data/slow.log  #slow日志文件
open_files_limit = 65535
innodb = FORCE
innodb_buffer_pool_size = 100M   #注意这个参数
innodb_log_file_size = 1G
query_cache_size = 0
thread_cache_size = 64
table_definition_cache = 512
table_open_cache = 512
max_connections = 20
sort_buffer_size = 10M
max_allowed_packet = 6M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
#socket = /var/lib/mysql/mysql.sock

##注意:innodb_buffer_pool_size:
##主要作用是缓存innodb表的索引,数据,插入数据时的缓冲
##默认值:128M
##专用mysql服务器设置此值的大小:系统内存的70%-80%最佳
##如果你的系统内存不大,查看这个参数,把它的值设置小一点吧(若值设置大了,启动会报错)
[root@dbm137 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    #拷贝启动脚本
[root@dbm137 ~]# /etc/init.d/mysqld start         #启动mysql服务
Starting MySQL.................................... SUCCESS! 
##注意:
##千万不要,千万不要设置mysql开机自动启动,因为mysql服务的启动由heartbeat统一管理
[root@dbm137 ~]# ps -ef | grep mysql
root     16284     1  0 12:46 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
mysql    16783 16284  6 12:46 pts/1    00:00:03 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=65535 --pid-file=/data/mysql/data/mysql.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root     16878  1286  0 12:47 pts/1    00:00:00 grep mysql
[root@dbm137 ~]# vi /etc/profile           #修改PATH路径
##在最后添加:
export PATH=$PATH:/usr/local/mysql/bin
[root@dbm137 ~]# source /etc/profile       #立即生效


    dbm138(secondary)

##下面的操作一定要看仔细
##先进行DRBD设备的主备切换,把dbm137切换为seocndary,把dbm138切换为primary
##在dbm137(primary)端执行
[root@dbm137 ~]# /etc/init.d/mysqld stop     #将137的mysql服务stop掉
Shutting down MySQL. SUCCESS! 
[root@dbm137 ~]# umount  /dev/drbd0          #卸载DRBD设备
[root@dbm137 ~]# drbdadm secondary r0        #切换137为secondary
[root@dbm137 ~]# cat /proc/drbd | grep ro
version: 8.3.16 (api:88/proto:86-97)
 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
##在dbm138(secondary)端执行
[root@dbm138 ~]# drbdadm  primary r0         #把138切换为primary
[root@dbm138 ~]# cat /proc/drbd | grep ro
version: 8.3.16 (api:88/proto:86-97)
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
[root@dbm138 ~]# mount /dev/drbd0 /data/     #挂载DRBD设备
[root@dbm138 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  3.4G   14G  20% /
tmpfs                  58M     0   58M   0% /dev/shm
/dev/sda1             477M   43M  409M  10% /boot
/dev/drbd0            8.8G  2.1G  6.3G  25% /data
[root@dbm138 ~]# cd /data/mysql/data/        #查看mysql数据
[root@dbm138 data]# ll
total 2109468
-rw-rw---- 1 mysql mysql         56 Jul  2 12:46 auto.cnf
-rw-rw---- 1 mysql mysql   12582912 Jul  2 13:02 ibdata1
-rw-rw---- 1 mysql mysql 1073741824 Jul  2 13:02 ib_logfile0
-rw-rw---- 1 mysql mysql 1073741824 Jul  2 12:46 ib_logfile1
drwx------ 2 mysql mysql       4096 Jul  2 12:00 mysql
drwx------ 2 mysql mysql       4096 Jul  2 12:00 performance_schema
-rw-rw---- 1 mysql mysql        185 Jul  2 12:46 slow.log
drwx------ 2 mysql mysql       4096 Jul  2 12:00 test
[root@dbm138 ~]# cd /data/mysql/binlog/      #查看二进制文件
[root@dbm138 binlog]# ll
total 8
-rw-rw---- 1 mysql mysql 285 Jul  2 13:02 mysql-binlog.000001
-rw-rw---- 1 mysql mysql  39 Jul  2 12:46 mysql-binlog.index

[root@dbm138 ~]# mv /usr/local/mysql/my.cnf /usr/local/mysql/my.cnf.old
[root@dbm138 ~]# vi /usr/local/mysql/my.cnf     #修改配置文件
[mysqld]
basedir = /usr/local/mysql  #安装路径
datadir = /data/mysql/data  #数据目录
port = 3306
server_id = 1               #此值不要去修改,因为主备mysql同一时刻只有一个被启动
pid-file = /data/mysql/data/mysql.pid  #进程文件
socket = /var/lib/mysql/mysql.sock
default_storage_engine = InnoDB
log-bin = /data/mysql/binlog/mysql-binlog  #二进制文件
expire_logs_days = 14
max_binlog_size = 5G
binlog_cache_size = 10M
max_binlog_cache_size = 20M
slow_query_log
long_query_time = 2
slow_query_log_file = /data/mysql/data/slow.log  #slow日志文件
open_files_limit = 65535
innodb = FORCE
innodb_buffer_pool_size = 100M   #注意这个参数
innodb_log_file_size = 1G
query_cache_size = 0
thread_cache_size = 64
table_definition_cache = 512
table_open_cache = 512
max_connections = 20
sort_buffer_size = 10M
max_allowed_packet = 6M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
#socket = /var/lib/mysql/mysql.sock

##注意:
##主备节点要保证配置文件my.cnf两边一模一样,避免出现问题

[root@dbm138 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    #拷贝启动脚本
##注意:
##千万不要,千万不要设置mysql开机自动启动,因为mysql服务的启动由heartbeat统一管理
[root@dbm138 ~]# /etc/init.d/mysqld start         #启动mysql服务
Starting MySQL.................................... SUCCESS! 
[root@dbm137 ~]# ps -ef | grep mysql
root     16284     1  0 12:46 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
mysql    16783 16284  6 12:46 pts/1    00:00:03 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=65535 --pid-file=/data/mysql/data/mysql.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root     16878  1286  0 12:47 pts/1    00:00:00 grep mysql
[root@dbm138 ~]# vi /etc/profile           #修改PATH路径
##在最后添加:
export PATH=$PATH:/usr/local/mysql/bin
[root@dbm138 ~]# source /etc/profile       #立即生效













本文出自 “” 博客,请务必保留此出处http://732233048.blog.51cto.com/9323668/1670068

DRBD+Heartbeat+Mysql:配置mysql的高可用

标签:mysql drbd heartbeat 高可用

原文地址:http://732233048.blog.51cto.com/9323668/1670068

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!