標籤:centos6.4搭建mysql高可用架構mha
一、環境
系統 CentOS 6.4x64迷你安裝
manager 192.168.3.51
master 192.168.3.52 (備用master)
slave1 192.168.3.53
slave2 192.168.3.54
二、配置hosts本地解析
4台機都配置相同的hosts解析,內容如下
[[email protected] ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.3.51manager192.168.3.52master192.168.3.53slave1192.168.3.54slave2
三、配置四台主機之間ssh免秘鑰登陸
manager:
[[email protected] ~]# ssh-keygen[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
master:
[[email protected] ~]# ssh-keygen[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
slave1:
[[email protected] ~]# ssh-keygen[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
slave2:
[[email protected] ~]# ssh-keygen[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected][[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
四、安裝mysql
在master,slave1,slave2上安裝mysql服務。這裡安裝的是mysql-5.5.37.tar.gz,使用指令碼進行安裝
指令碼內容如下
[[email protected] ~]# cat mysql_install.sh #!/bin/bash DATADIR=‘/data/mysql/data‘VERSION=‘mysql-5.5.37‘export LANG=zh_CN.UTF-8 #Source function library.. /etc/init.d/functions #camke install mysql5.5.Xinstall_mysql(){ read -p "please input a password for root: " PASSWD if [ ! -d $DATADIR ];then mkdir -p $DATADIR fi yum install cmake make gcc-c++ bison-devel ncurses-devel -y id mysql &>/dev/null if [ $? -ne 0 ];then useradd mysql -s /sbin/nologin -M fi #useradd mysql -s /sbin/nologin -M #change datadir owner to mysql chown -R mysql.mysql $DATADIR cd #wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.38.tar.gz tar xf $VERSION.tar.gz cd $VERSION cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/$VERSION -DMYSQL_DATADIR=$DATADIR -DMYSQL_UNIX_ADDR=$DATADIR/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 make && make install if [ $? -ne 0 ];then action "install mysql is failed!" /bin/false exit $? fi sleep 2 #link ln -s /usr/local/$VERSION/ /usr/local/mysql ln -s /usr/local/mysql/bin/* /usr/bin/ #copy config and start file /bin/cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod 700 /etc/init.d/mysqld #init mysql /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=$DATADIR --user=mysql if [ $? -ne 0 ];then action "install mysql is failed!" /bin/false exit $? fi #check mysql /etc/init.d/mysqld start if [ $? -ne 0 ];then action "mysql start is failed!" /bin/false exit $? fi chkconfig --add mysqld chkconfig mysqld on /usr/local/mysql/bin/mysql -e "update mysql.user set password=password(‘$PASSWD‘) where host=‘localhost‘ and user=‘root‘;" /usr/local/mysql/bin/mysql -e "update mysql.user set password=password(‘$PASSWD‘) where host=‘127.0.0.1‘ and user=‘root‘;" /usr/local/mysql/bin/mysql -e "delete from mysql.user where password=‘‘;" /usr/local/mysql/bin/mysql -e "flush privileges;" #/usr/local/mysql/bin/mysql -e "select version();" >/dev/null 2>&1 if [ $? -eq 0 ];then echo "+---------------------------+" echo "+------mysql安裝完成--------+" echo "+---------------------------+" fi #/etc/init.d/mysqld stop} install_mysql
建立master,slave1,slave2之間的主從複製
修改3台機的server-id,確保是唯一的
#master的server-id[[email protected] ~]# grep server-id /etc/my.cnf server-id= 1#slave1的server-id[[email protected] ~]# grep server-id /etc/my.cnf server-id= 53#slave2的server-id[[email protected] ~]# grep server-id /etc/my.cnf server-id= 53
在master,slave1上配置主從同步用的帳號。slave1是備用的master,這個也需要進行授權。
#建立主從同步用的帳號
本文出自 “ly36843營運” 部落格,請務必保留此出處http://ly36843.blog.51cto.com/3120113/1671718
CentOS6.4搭建mysql高可用架構MHA