[Linux]-MySQL主從複製

來源:互聯網
上載者:User

標籤:enable   check   複製   名稱   efi   medium   show   pass   host   

MySQL支援的複製類型:

  1) 基於語句的複製。在主伺服器上執行的SQL語句,在從伺服器上執行同樣的語句。MySQL預設採用基於語句的複製,效率比較高;

  2) 基於行的複製。把改變的內容複寫過去,而不是把命令在從伺服器上執行一遍;

  3) 混合類型的複製。預設採用基於語句的複製,一旦發現基於語句無法精確複製時,就會採用基於行的複製;

MySQL主從複製的原理:

 

1) 在Master中每個事物更新資料完成之後,寫入二進位日誌中;

2) slave的I/O線程監控Master的二進位日誌,一旦日誌發生變化,就將變化的部分讀取並寫入到slave的中繼日誌中去;

3) slave中的SQL線程監控中繼日誌,一旦發生變化讀取變化的內容,之後重放(重新執行一遍SQL語句),實現mysql資料的同步。

主MySQL伺服器(master)------從MySQL伺服器(slave)配置
mount  /dev/cdrom  /mnt/    //掛載光碟片使用yum
1、安裝yum,把需要的安裝包放在伺服器裡面,yum會自動安裝依賴關係
[[email protected] ~]# rm -rf /etc/yum.repos.d/*[[email protected] ~]# vim /etc/yum.repos.d/yum.repo
[yum]name=yum installbaseurl=file:///mnt/enabled=1gpgcheck=0
2、安裝mysql伺服器
#!/bin/bash#安裝Mysql服務#初始化當前所處的路徑pwd_dir=`pwd`#######################[初始設定變數]########################mysql源碼包的名稱mysql_package_name=‘mysql-5.5.22.tar.gz‘#cmake源碼包的名稱cmake_package_name=‘cmake-2.8.6.tar.gz‘#mysql安裝路徑mysql_install=‘/usr/local/mysql‘#mysql解壓出源碼包目錄的名稱mysql_package_dir=‘mysql-5.5.22‘#cmake解壓出源碼包目錄的名稱cmake_pachage_dir=‘cmake-2.8.6‘#源碼包解壓存放路徑code_package_dir=‘/usr/src/‘#依賴包的檔案名稱subjoin_package_file=‘ncurses-devel-5.7-3.20090208.el6.x86_64.rpm‘###########################[END]#############################卸載rpm方式的安裝的mysql服務rpm -e mysql-server --nodeps &> /dev/null#檢查依賴包rpm -q ncurses-devel &> /dev/nullif [ $? -ne 0 ]then    rpm -ih $subjoin_package_fiel --nodepsfi#編譯安裝cmaketar zxvf $cmake_package_name -C $code_package_dir &> /dev/nullcd $code_package_dir$cmake_pachage_dir./configure &> /dev/nullgmake &> /dev/nullgmake install &> /dev/nullcd $pwd_dir#編譯安裝msyqltar zxf $mysql_package_name -C $code_package_dir &> /dev/nullcd $code_package_dir$mysql_package_dircmake -DCMAKE_INSTALL_PREFIX=$mysql_install -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWHIT_CHARSETS=all &> /dev/nullmake &> /dev/nullmake install &> /dev/null#配置msyqluserdel mysql &> /dev/nulluseradd -M -s /sbin/nologin mysql &> /dev/nullchown -R mysql:mysql  $mysql_install &> /dev/nullcp -f ${mysql_install}/support-files/my-medium.cnf /etc/my.cnfln -s ${mysql_install}/bin/* /usr/local/bin/cp ${mysql_install}/support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on#初始化mysql$mysql_install/scripts/mysql_install_db --user=mysql --basedir=$mysql_install --datadir=${mysql_install}/data/ &> /dev/nullservice mysqld start &> /dev/nullecho ‘mysql install successful‘
MySQL指令碼3、配置主要的MySQL伺服器(master)

修改mysql的設定檔

[[email protected] ~]# vim /etc/my.cnf ...... //省略部分配置內容# Replication Master Server (default)# binary logging is required for replicationlog-bin=master-bin         //修改server-id       = 1           //主伺服器,數字越小等級越高log-slave-updates=true   //修改
[[email protected] ~]# service mysqld restart //重啟服務

主伺服器登入MySQL給從伺服器同步的許可權

[[email protected] ~]# mysql -u root -p
mysql> grant replication slave on *.* to ‘myslave‘@‘192.168.1.%‘ identified by ‘123.com‘;mysql> flush privileges; //強制重新整理
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |      338 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 其中File列顯示日誌名,Position列顯示位移量,這兩個值在後面配置從伺服器的時候需要。

Slave應從該點在Master上進行新的更新

配置mysql從伺服器(slave)

server-id       = 2       //修改,要低於主mysql,更不能一樣relay-log=relay-log-bin   //添加relay-log-index=slave-relay-bin.index   //添加
[[email protected] ~]# service mysqld restart //重啟服務

登入MySQL,配置同步

按主伺服器的file資訊和Position位置號更改下面命令中的master_log_file和master_log_pos參數;

[[email protected] ~]# mysql -u root -pmysql> change master to master_host=‘192.168.1.9‘,
master_user=‘myslave‘,master_password=‘123.com‘,
master_log_file=‘master-bin.000001‘,
master_log_pos=338;
mysql> start slave; //開始即時同步
mysql> show slave status\G;    //查看同步的狀態資訊*************************** 1. row ***************************               Slave_IO_State: Connecting to master                  Master_Host: 192.168.1.9                  Master_User: myslave                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: master-bin.000001          Read_Master_Log_Pos: 338               Relay_Log_File: relay-log-bin.000001                Relay_Log_Pos: 4        Relay_Master_Log_File: master-bin.000001             Slave_IO_Running: Connecting            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 338              Relay_Log_Space: 107              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: NULLMaster_SSL_Verify_Server_Cert: No                Last_IO_Errno: 2003                Last_IO_Error: error connecting to master ‘[email protected]:3306‘ - retry-time: 60  retries: 86400               Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 0
驗證

在主伺服器上建立一個庫,然後在從伺服器上刷,就可以看到我們所建立的庫

master-bin.000001 是一個二進位的檔案,裡面存放的是我們建立庫寫入的sql語句

我們可以用mysqlbinlog命令可以查看mysql的二進位記錄檔,後面跟路徑

[Linux]-MySQL主從複製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.