mysql 半同步 主主_MySQL主从,半同步,主主复制
MySQL Replication
我們知道,MySQL數據庫的二進制日志記錄著每一個明確或者潛在可能導致數據庫發生改變的sql語句,因此我們可以基于二進制日志來實現mysql的主從一致。而我們在此提到的mysql的復制的簡單過程就是:
首先mysql的主服務器(Master)上有一個叫dump的線程,負責將二進制日志讀取進來,發送給slave.
而后mysql的從服務器(Slave)上有個I/O線程 ,負責接收Master傳送過來的二進制日志數據,并且將此寫入到本地的中繼日志中,此時會有一個SQL線程,每次中繼日志讀取一句sql語句, 并在從Slave上應用,以實現主從服務器的一致。
首先需要提供2臺mysql版本一致的mysql服務器,在此選用的mysql-5.5.20,平臺為RedHat5.4
一、安裝mysql-5.5.20
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin –M mysql
//新建用戶以安全方式運行進程
# chown -R mysql:mysql /mydata/data
# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local
//將下載好的mysql軟件解壓安裝
# cd /usr/local/
# ln -sv mysql-5.5.20-linux2.6-i686? mysql
# cd mysql
# chown -R mysql:mysql? .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/mysql
//初始化mysql,此處使用的/mydata/mysql存放mysql的數據,建議將/mydata掛載至一個邏輯卷,方便數據備份
# chown -R root? .
# cd /usr/local/mysql
# cp support-files/my-large.cnf? /etc/my.cnf
#vim /etc/my.cnf
thread_concurrency = 2??????? //修改此項,我們的cpu為雙核的
datadir = /mydata/data??????? //添加此項,指定數據存放的目錄
# cp support-files/mysql.server? /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
二:為使用mysql的安裝符合系統使用規范,并將其開發組件導出給系統使用,需如下操作
#vim/etc/man.config??????????? //輸出mysql的man手冊至man命令的查找路徑
MANPATH? /usr/local/mysql/man???? //添加此行
# ln -sv /usr/local/mysql/include? /usr/include/mysql
//輸出mysql的頭文件至系統頭文件路徑/usr/include
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
//輸出mysql的庫文件給系統庫查找路徑
# ldconfig??????????? //讓系統重新載入系統庫
#vim /etc/profile????????? //修改PATH環境變量,讓系統可以直接使用mysql的相關命令
PATH=$PATH:/usr/local/mysql/bin????? //添加此行
三:實現主從復制
master ip:192.168.1.10
slave ip:192.168.1.11
On Master :(在主服務器的操作)
#vim /etc/my.cnf??? 確保證如下選項:
server-id = 1?? //主服務器的身份標識
log-bin=mysql-bin? //開啟二進制日志
sync_binlog=1?????? //事務提交立即寫入到二進制日志
innodb_flush_logs_at_trx_commit=1 //事務提交之時,立即將二進制日志寫入磁盤
#mysql –uroot –p
mysql> grant replication client,replication slave on *.* to cclo@’192.168.1.%’ identified by ‘12345’;
//此處創建一個用戶名為cclo,密碼為12345的用戶,其權限為client和replication
mysql> flush privileges;
mysql> show grants for cclo@’192.168.1.%’; //驗證此用戶的權限
On Slave:(在從服務器的操作)
#vim /etc/my.cnf
[mysqld]
server-id?????? = 11??? // 數值只要保證和Master不同即可
#log-bin=mysql-bin???? //slave的二進制日志一般用不到,暫時關閉
relay-log=relay-bin??? //開啟中繼日志
relay-log-index=relay-bin.index
read_only=1??????????? //此項為阻止普通用戶寫從服務器
skip_slave_start=1
//mysql服務關閉后,當服務開啟時跳過自動啟動主從復制(如需自動啟動,此項略過)
#service mysqld restart
#mysql –uroot –p
mysql> show master status;
+------------------+----------+--------------+------------------+
| File???????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 |????? 374 |????????????? |????????????????? |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.10',master_user='cclo',master_password='12345',master_log_file='mysql-bin.000003',master_log_pos=374;
//指定Master的ip及復制的用戶及二進制日志的位置
mysq> start slave;??????????????? //啟動主從復制
mysql > show slave status;?????? //查詢從服務器的工作屬性,確保以下2項
Slave_IO_Runing: Yes
?Slave_SQL_Runing: Yes??????? //確保此2項為Yes的狀態
總結
以上是生活随笔為你收集整理的mysql 半同步 主主_MySQL主从,半同步,主主复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java上传excel文件代码,求jav
- 下一篇: vue修改入口文件名字_webpack打