mysql1和mysql分別上傳源碼包mysql-5.6.26.tar.gz,而後mysql1和mysql分別源碼編譯安裝mysql:mysql
cd sql
tar xf mysql-5.6.26.tar.gz -C /usr/local/src && cd /usr/local/src/mysql-5.6.26 && useradd -M -s /sbin/nologin mysql && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL-USER=mysql && make -j 8 && make install && 數據庫
cd && chown -R mysql:mysql /usr/local/mysql/ vim
cp /etc/my.cnf /etc/my.cnf.bak服務器
rm -fr /etc/my.cnf socket
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf ide
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 測試
chkconfig mysqld onrest
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/日誌
ln -s /usr/local/mysql/bin/* /bin/
/etc/init.d/mysqld start
mysql_secure_installation
1、mysql主從配置:
一、主mysql
192.168.146.13 :
建立須要同步的數據庫:
mysql>create database HA;
mysql>use HA;
mysql> create table test(id int,name char(20));
mysql> insert into test values(‘001’,’zhangsan’);
/etc/init.d/mysqld stop
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
增長下面4行:
log-bin=mysql-bin-master# 啓用二進制日誌
server-id=1 #本機數據庫ID 標示
binlog-do-db=HA #能夠被從服務器複製的庫。二進制須要同步的數據庫名
binlog-ignore-db=mysql #不能夠被從服務器複製的庫
重啓mysql:
/etc/init.d/mysqld restart
受權:
mysql>grant replication slave on . to slave@192.168.146.14 identified by "123456";
mysql>grant replication slave on . to slave@'%' identified by "123456"; 受權給任何ip能夠來同步。
查看狀態信息:
mysql> show master status;
mysql-master-bin.000001
查看二進制日誌:
ls /usr/local/mysql/data/
mysql> show binlog events\G
複製前要保證同步的數據庫一致,導出數據庫
mysqldump -uroot -p123456 HA >HA.sql #導出數據庫
將導出的數據庫傳給從服務器
方法一:scp HA.sql root@192.168.146.14:/root
或者
記得清空兩臺服務器的iptables,要否則端口不能通訊
iptables –F
/etc/init.d/iptables stop
chkconfig iptables off
mysql2:
兩臺數據庫服務器mysql版本要一致
mysql> show variables like '%version%';
二、從mysql
192.168.146.14 :
修改從服務器配置文件:
從服務器不必開啓bin-log日誌
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
增長下面1行:
server-id= 2 #從服務器ID號,不要和主ID相同 ,若是設置多個從服務器,每一個從服務器必須有一個惟一的server-id值,必須與主服務器的以及其它從服務器的不相同。能夠認爲server-id值相似於IP地址:這些ID值能惟一識別複製服務器羣集中的每一個服務器實
/etc/init.d/mysqld restart
測試鏈接到主服務器是否成功
mysql -uslave -p123456 -h 192.168.146.13
導入數據庫,和主數據庫服務器保持一致
msyql -uroot -p123456
mysql> create database HA;
mysql > use HA;
mysql > source HA < HA.sql
或者:
mysql -uroot -p123456 HA < HA.sql
mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456';
mysql> start slave;
mysql>show slave status\G 查看狀態
出現2個yes即爲正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
作完以上步驟就是msyql主從配置,若是要部署成msyql主-主配置需繼續以下配置:
2、mysql主主配置:
一、mysql2從
192.168.146.14:
vim /etc/my.cnf
增長 log-bin=mysql-bin-master# 啓用二進制日誌
server-id= 2
增長 binlog-do-db=HA #能夠被從服務器複製的庫。二進制須要同步的數據庫名
增長 binlog-ignore-db=mysql #不能夠被從服務器複製的庫
/etc/init.d/mysqld restart
受權:
mysql>grant replication slave on . to slave@192.168.146.13 identified by "123456";
回到mysql1:
mysql> change master to master_host='192. 168.146.14',master_user='slave',master_password='123456';
3、從新同步全部數據:
mysql> stop slave;
mysql>drop database test;
回到主mysql:
mysqldump -uroot -p123456 HA >HA.sql #導出數據庫
scp HA.sql root@192.168.146.14:/root
回到從mysql:
mysql -uroot -p123456 HA < HA.sql
mysql -uroot -p
mysql> stop slave;
mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456';
mysql> start slave;
mysql>show slave status\G 查看狀態
4、從新同步某個節點的數據:
主msyql:
mysql> show master status;
記錄下 master_log_file='mysql-bin-master.000004' 和 master_log_pos=360
從mysql:
mysql> stop slave;
mysql> drop database test;
mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000004',master_log_pos=360;
mysql> start slave;
5、master掛了,如何提高slave爲master注意事項一、默認mysq主從只能是master向slave同步數據,除非是主主或者是cluster才能夠互相同步數據,固然能夠配合keepalived或者mha進行vip的高可用二、建議主從,或者主主的時候把另外一臺主設置爲只讀,防止數據不一致的狀況發生。查看數據庫是否只讀:show global variables like '%only%';設置只讀:set global read_only=1;