高可用-mysql安裝,雙主模式+keepalived

mysql安裝
1.添加用戶
groupadd mysql
useradd -r -g mysql mysql
 
2.路徑受權
切到mysql目錄 cd /usr/local/mysql
修改當前目錄擁有者爲mysql用戶 chown -R mysql:mysql ./
 
3.初始化
安裝數據庫 bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(看到有的報這個錯bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory解決方法:yum install -y libaio  //安裝後在初始化就OK了)
 
4.建立RSA
執行如下命令建立RSA private key  bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
 
5.修改權限
修改當前目錄擁有者爲mysql用戶 chown -R mysql:mysql ./
修改當前data目錄擁有者爲mysql用戶 chown -R mysql:mysql data
6.配置my.cnf
vim /etc/my.cnf    (直接把下面內容複製上就行)
 
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#不區分大小寫 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 這個簡單來講就是sql語句是否嚴格)
lower_case_table_names = 1
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
 
 
7.開機啓動
添加開機啓動     cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
vi /etc/init.d/mysqld  
 加入開機起動    chkconfig --add mysqld  
 
八、啓動mysql   service mysqld start 
 
九、登陸修改密碼 mysql -uroot -p 上面初始化時的密碼
若是出現錯誤 須要添加軟鏈接  ln -s /usr/local/mysql/bin/mysql /usr/bin
 
10.修改初始化密碼
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set password='suntek@1234';
Query OK, 0 rows affected (0.00 sec)
 
mysql> grant all privileges on *.* to 'root'@'%' identified by 'suntek@1234';
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
 
11.打開防火牆
vi /etc/sysconfig/iptables
添加一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306-j ACCEPT
service iptables restart
 
 


 
二.雙主配置
172.16.70.6
172.16.70.7
 
1.配置/etc/my.cnf,配置完後必定要先重啓
 
172.16.70.6機器
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
lower_case_table_names = 1
 
server-id = 1
log-bin = mysql-bin
binlog_format = mixed
relay_log = relay-bin
auto_increment_increment=2
auto_increment_offset=1
 
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
172.16.70.7機器
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
lower_case_table_names = 1
 
server-id = 2
log-bin = mysql-bin
binlog_format = mixed
relay_log = relay-bin
auto_increment_increment=2
auto_increment_offset=2
 
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
黃色背景部分server-id和 auto_increment_offset不能相同,其它必須相同
部分配置項解釋以下:
binlog_format= mixed:指定mysql的binlog日誌的格式,mixed是混合模式。
relay-log:開啓中繼日誌功能
relay-log-index:中繼日誌清單
auto-increment-increment= 2:表示自增加字段每次遞增的量,其默認值是1。它的值應設爲整個結構中服務器的總數,本案例用到兩臺服務器,因此值設爲2。
auto-increment-offset= 2:用來設定數據庫中自動增加的起點(即初始值),由於這兩能服務器都設定了一次自動增加值2,因此它們的起點必須得不一樣,這樣才能避免兩臺服務器數據同步時出現主鍵衝突。
注:另外還能夠在my.cnf配置文件中,添加「binlog_do_db=數據庫名」配置項(能夠添加多個)來指定要同步的數據庫。若是配置了這個配置項,若是沒添加在該配置項後面的數據庫,則binlog不記錄它的事件。
 
2.在msql1(172.16.70.6)建立一個用戶給mysql2(172.16.70.7)鏈接使用的,用戶名爲suntek,密碼爲suntek@1234
 
grant replication slave on *.* to 'suntek'@'172.16.70.7' identified by 'suntek@1234';
3.msql1(172.16.70.6)查看binlog信息
 
show master status;
 
 
4.mysql2(172.16.70.7)將mysql1設爲自已的主服務器並開啓slave功能:
change master to master_host='172.16.70.6',master_user='suntek',master_password='suntek@1234',master_log_file='mysql-bin.000001',master_log_pos=154;
start slave;
 
5.msql2(172.16.70.7)的狀態:
 
show slave status \G;
(\G格式化輸出)
 
 
mysql1與mysql2反過來2~5步驟
 
6.在msql2(172.16.70.7)建立一個用戶給mysql1(172.16.70.6)鏈接使用的,用戶名爲suntek,密碼爲suntek@1234
 
grant replication slave on *.* to 'suntek'@'172.16.70.6' identified by 'suntek@1234';
msql2(172.16.70.7)查看binlog信息
show master status;
 
 
7.mysql1(172.16.70.6)將mysql1設爲自已的主服務器並開啓slave功能:
change master to master_host='172.16.70.7',master_user='suntek',master_password='suntek@1234',master_log_file='mysql-bin.000001',master_log_pos=454;
start slave;
show slave status;
 


3、keepalive
vip:172.16.70.200
ip1 : 172.16.70.六、ip2 : 172.16.70.7
 
1.下載keepalive安裝包http://www.keepalived.org/download.html
 
2.安裝依賴
yum install -y libnl-devel libnl3-devel libnfnetlink-devel openssl-devel
 
3.解壓
tar zxvf keepalived-2.0.10.tar.gz
 
4.進入解壓後的目錄,進行configure
cd keepalived-2.0.10
./configure --prefix=/usr/local/keepalived
 
5.進行編譯安裝
make && make install
 
6.拷貝執行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
 
7.將init.d文件拷貝到etc下,加入開機啓動項
cp /usr/local/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
 
8.將keepalived文件拷貝到etc下,加入網卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
 
9.將keepalived配置文件拷貝到etc下
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
 
10.添加可執行權限
chmod +x /etc/init.d/keepalived
 
11.加入開機啓動
chkconfig --add keepalived #添加時必須保證/etc/init.d/keepalived存在
chkconfig keepalived on
#添加完可查詢系統服務是否存在:
chkconfig --list
 
12.編輯檢測腳本msyql.sh,放到/etc/keepalived/mysql.sh,並受權
這個的做用是當檢測到mysql中止時,也kill了keepalived進程
#!/bin/sh  
pkill keepalived
 
 
受權
chmod +x /etc/keepalived/mysql.sh
 
 
 
13.編輯/etc/keepalived/keepalived.cof文件
原來兩臺機器原來網絡172.16.70.6和172.16.70.7
 
配置文件
四個地方不一樣router_id ,priority,nopreempt(prority大的要配置,另外一個不用配置),real_server
172.16.70.6的/etc/keepalived/keepalived.conf
 
 
! Configuration File for keepalived
 
global_defs {
  router_id mysql70-6
}
 
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 51
    priority 100
   advert_int 1
    nopreempt
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.16.70.199
   }
}
 
virtual_server 172.16.70.199 3306 {
   delay_loop 2
   lb_algo rr
   lb_kind DR
   persistence_timeout 60
   protocol TCP
   
   real_server 172.16.70.6 3306 {
       weight 3
       notify_down    /etc/keepalived/mysql.sh
       TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
       }
   }
}
 
172.16.70.7的/etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
 
global_defs {
  router_id mysql70-7
}
 
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 51
    priority 50
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
 
   virtual_ipaddress {
       172.16.70.199
   }
}
 
virtual_server 172.16.70.199 3306 {
   delay_loop 2
   lb_algo rr
   lb_kind DR
   persistence_timeout 60
   protocol TCP
 
   real_server 172.16.70.7 3306 {
       weight 3
       notify_down    /etc/keepalived/mysql.sh
       TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
       }
   }
}
 
 
14.啓動、中止、重啓keepalived服務
service keepalived start
service keepalived stop
service keepalived restart
 
15.查看服務
ps -ef |grep keepalived
16.查看網絡結構
ip addr
 
17.別的機器ping 一下虛擬IP172.16.70.199
 
18.中止172.16.70.6機器數據庫mysql測試
相關文章
相關標籤/搜索