手机版
你好,游客 登录 注册
背景:
阅读新闻

MariaDB数据库双主N从复制高可用实现-MMM架构的实现

[日期:2015-01-29] 来源:Linux社区  作者:sohudrgon [字体: ]

一.MMM概述
MMM(Master-Master replication manager for Mysql)是一套灵活的脚本程序,用来监控和故障切换,管理mysql Master-Master复制的配置 (同一时间只有一个节点是可写的)。附带的工具套件可以实现多个slaves的read负载均衡,因此你可以使用这个工具移除一组服务器中复制延迟较高的服务器的虚拟IP,它还可以备份数据,两节点之间再同步等等。
MMM主要的功能通过下面三个脚本来实现:
mmm_mond
监控进程,负责所有的监控工作,决定和处理所有节点角色活动
mmm_agentd
运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置
mmm_control
一个简单的脚本,提供管理mmm_mond进程的命令


二.实验环境介绍
最基本的MMM安装必须至少需要2个数据库服务器和一个监控服务器,下面要配置的MySQL Cluster环境包含三台数据库服务器和一台监控服务器。
实验架构如下:

MariaDB数据库双主N从复制高可用实现-MMM架构的实现

主机规划表

MariaDB数据库双主N从复制高可用实现-MMM架构的实现

虚拟VIP规划表:

MariaDB数据库双主N从复制高可用实现-MMM架构的实现

CentOS/RHEL/Scientific Linux 6 下安装 LAMP (Apache with MariaDB and PHP) http://www.linuxidc.com/Linux/2013-07/86755.htm

MariaDB Proxy读写分离的实现 http://www.linuxidc.com/Linux/2014-05/101306.htm

Linux下编译安装配置MariaDB数据库的方法 http://www.linuxidc.com/Linux/2014-11/109049.htm

CentOS系统使用yum安装MariaDB数据库 http://www.linuxidc.com/Linux/2014-11/109048.htm

安装MariaDB与MySQL并存 http://www.linuxidc.com/Linux/2014-11/109047.htm

Ubuntu 上如何将 MySQL 5.5 数据库迁移到 MariaDB 10  http://www.linuxidc.com/Linux/2014-11/109471.htm

[翻译]Ubuntu 14.04 (Trusty) Server 安装 MariaDB  http://www.linuxidc.com/Linux/2014-12/110048htm

高可用性实现的前提:
1.时间同步,尽量使用NTP服务器;
2.hosts文件解析;
[root@node3 ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.1  server.magelinux.com server
172.16.31.20 node3.stu31.com node3
172.16.31.21 node4.stu31.com node4
172.16.31.22 node5.stu31.com node5
172.16.31.23 node6.stu31.com node6
3.ssh无密钥通信;
node3,node4和node6节点之间需要实现ssh无密钥通信
# ssh-keygen -t rsa -P ""
# ssh-copy-id -i .ssh/id_rsa.pub root@node3
测试:
[root@node6 ~]# date ;ssh node4 date ; ssh node3 date;
Sun Jan 25 16:40:51 CST 2015
Sun Jan 25 16:40:52 CST 2015
Sun Jan 25 16:40:52 CST 2015

三.编译安装mariadb数据库过程略。
提供的my.cnf如下:
[root@node3 ~]# grep -v '^#' /etc/my.cnf 
[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 4
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

我这里提供一个脚本,基本上可以实现mariadb编译安装自动化:
[root@node3 ~]# cat installmysql.sh 
#!/bin/bash
#install mysql
mysql_dir="/usr/local/mysql"
mysql_datadir="/mydata/data"
mysql_logdir="/mydata/data/"
mysql_passwd="Oracle"
function install_mysql()  {
yum groupinstall -y Development Tools
yum install -y cmake ncurses-devel openssl-devel openssl
cd /root/
useradd -M -s /sbin/nologin mysql
mkdir -p $mysql_datadir
chown mysql.mysql -R $mysql_datadir
tar zxf mariadb-10.0.12.tar.gz 
cd mariadb-10.0.12
cmake . -DCMAKE_INSTALL_PREFIX=$mysql_dir/ \
-DMYSQL_DATADIR=$mysql_datadir \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DCMAKE_THREAD_PREFER_PTHREAD=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_DEBUG=0
make && make install
rm -rf /etc/my.cnf
rm -rf /etc/init.d/mysqld
mkdir $mysql_logdir/relaylog
mkdir $mysql_logdir/binlog
cp /root/my.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
chown mysql.mysql -R $mysql_logdir
chown mysql.mysql -R $mysql_datadir
$mysql_dir/scripts/mysql_install_db --user=mysql --basedir=$mysql_dir --datadir=$mysql_datadir
/sbin/service mysqld start
echo 'export PATH=$PATH:'$mysql_dir'/bin' >> /etc/profile
source /etc/profile
$mysql_dir/bin/mysql -e "grant all privileges on *.* to root@'%' identified by '$mysql_passwd' with grant option;"
$mysql_dir/bin/mysql -e "flush privileges;"
$mysql_dir/bin/mysql -e "delete from mysql.user where password='';"
/sbin/service mysqld restart
echo "mysql install success!"
}
install_mysql

将数据库源码包和配置好的my.cnf文件放置在/root目录下后即可进行编译安装;

在node3,node4和node6编译安装完成后即可进行双主单从复制架构实现;

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2015-01/112559p2.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款