程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql-5.6主從復制及遇到的錯誤

mysql-5.6主從復制及遇到的錯誤

編輯:MySQL綜合教程

mysql-5.6主從復制及遇到的錯誤   mysql的復制過程:每執行一個寫操作,它都會往自己的數據庫中存一份,與此同時這個寫操作也會存儲在二進制日志文件中一份,並且把它們保存為事件,所以在這個數據庫上,前端數據每執行一個寫操作或者有可能引起修改的操作,都會保存一個事件,我們就把這個事件通過mysql服務器3306端口發送給另外一台服務器,另外一台服務器把這個事件接收下來,接受下來以後先保存在本地的日志文件中,而後從這個日志文件中一次讀一個事件並且在本地執行一下,然後保存在數據庫裡面,這個過程就叫mysql的復制。   安裝mysql的過程就不講了,直接開始我們的主從復制的配置過程:   1、 開啟master和slave的二進制日志功能,也就是在mysql的主配置文件/usr/local/mysql/etc/my.cnf中,添加log_bin=mysql-bin,將master的server_id 設置為1,slave的server_id=2.   下面是master的配置文件   [root@localhost ~]# cat /usr/local/mysql/etc/my.cnf | grep -v ^#| grep -v ^$ [mysqld]  server_id = 1  log_bin=mysql-bin  log-bin-index = mysql-bin.index  log-error = /var/log/mysql/mysql-error.log  general_log = 1  general_log_file = /var/log/mysql/mysql.log  user = mysql  basedir = /usr/local/mysql  datadir = /datadir  port = 3306  socket = /var/lib/mysql/mysql5.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES    接下來是slave的配置文件   [root@wordpress ~]# cat /usr/local/mysql/etc/my.cnf | grep - v ^# | grep -v ^$ [mysqld]  server_id = 2  log_bin=mysql-bin  log-bin-index = mysql-bin.index  general_log = 1  general_log_file = /var/log/mysql/mysql.log  log-error=/var/log/mysql/mysql.error  basedir = /usr/local/mysql  datadir = /database  port = 3306  socket = /var/run/mysqld/mysql.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES    2、在主服務器上,設置一個從數據庫的賬戶,使用REPLICATION SLAVE賦予權限   mysql> grant replication slave on *.* to 'tt'@'192.168.254.153' identified by '123456'; Query OK, 0 rows affected (0.06 sec)   mysql> show master status \G;                查看當前master的二進制日志狀態和起始點 *************************** 1. row ***************************              File: mysql-bin.000011          Position: 330      Binlog_Do_DB:   Binlog_Ignore_DB:  Executed_Gtid_Set:  1 row in set (0.01 sec)       mysql> flush tables with read lock;             將mysql的數據庫鎖表,僅僅允許讀,以保證數據的一致性 Query OK, 0 rows affected (0.06 sec)       [root@localhost ~]# mysqldump -uroot -p123 blog  > blog.sql        將blog這個庫以腳本的形式導出來,便於導入slave   mysql> unlock tables;                                              解鎖 Query OK, 0 rows affected (0.00 sec)   3、 slave上的操作   [root@wordpress ~]# mysql -u root -p123456 < blog.sql   mysql> change master to master_host='192.168.2 54.46',master_user='master',master_password='m aster',master_log_file='mysql-bin.000011',master_log_pos=330; Query OK, 0 rows affected, 2 warnings (0.13 sec)       mysql> show slave status \G; *************************** 1. row ***************************                Slave_IO_State:                    Master_Host: 192.168.254.46                   Master_User: master                   Master_Port: 3306                 Connect_Retry: 60               Master_Log_File: mysql-bin.000011           Read_Master_Log_Pos: 330                Relay_Log_File: wordpress-relay-bin.000001                 Relay_Log_Pos: 4         Relay_Master_Log_File: mysql-bin.000011              Slave_IO_Running: No             Slave_SQL_Running: No               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: 330               Relay_Log_Space: 120               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: NULL Master_SSL_Verify_Server_Cert: No                 Last_IO_Errno: 0                 Last_IO_Error:                 Last_SQL_Errno: 0                Last_SQL_Error:    Replicate_Ignore_Server_Ids:               Master_Server_Id: 0                   Master_UUID:               Master_Info_File: /database/master.info                     SQL_Delay: 0           SQL_Remaining_Delay: NULL       Slave_SQL_Running_State:             Master_Retry_Count: 86400                   Master_Bind:        Last_IO_Error_Timestamp:       Last_SQL_Error_Timestamp:                 Master_SSL_Crl:             Master_SSL_Crlpath:             Retrieved_Gtid_Set:              Executed_Gtid_Set:                  Auto_Position: 0 1 row in set (0.00 sec)   mysql> start slave; Query OK, 0 rows affected (0.05 sec)       4、測試   在master上新建表,   mysql> use blog; Database changed mysql> create table hi_tb(id int(3),name char(10)); Query OK, 0 rows affected (0.14 sec)     mysql> show tables; +----------------+ | Tables_in_blog | +----------------+ | hi_tb          | +----------------+ 1 row in set (0.00 sec)   在slave查看   mysql> use blog; Database changed mysql> show tables; Empty set (0.00 sec)   mysql slave沒有發現新建的表,說明主從復制中間出了問題,所以需要查看mysql錯誤日志   tail  -f  /var/log/mysql/mysql.error   2013-09-22 15:39:21 2150 [Warning] Storing MySQL user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MySQL Manual for more about this issue and possible alternatives. 2013-09-22 15:39:21 2150 [Note] Slave I/O thread: connected to master '[email protected]:3306',replication started in log 'mysql-bin.000011' at position 330 2013-09-22 15:39:21 2150 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 2013-09-22 15:39:21 2150 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000011' at position 330, relay log './wordpress-relay-bin.000001' position: 4 2013-09-22 15:39:21 2150 [ERROR] Slave I/O: Master command COM_REGISTER_SLAVE failed: Access denied for user 'master'@'192.168.254.153' (using password: YES) (Errno: 1045), Error_code: 1597 2013-09-22 15:39:21 2150 [ERROR] Slave I/O thread couldn't register on master 2013-09-22 15:39:21 2150 [Warning] Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again, log 'mysql-bin.000011' at position 330, Error_code: 1597 2013-09-22 15:39:21 2150 [Warning] Storing MySQL user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MySQL Manual for more about this issue and possible alternatives. 2013-09-22 15:39:21 2150 [ERROR] Slave I/O: Master command COM_REGISTER_SLAVE failed: Access denied for user 'master'@'192.168.254.153' (using password: YES) (Errno: 1045), Error_code: 1597 2013-09-22 15:39:21 2150 [ERROR] Slave I/O thread couldn't register on master       錯誤原因,沒有在master上給master用戶授權!!   mysql> select * from hi_tb;  (master) +------+------+ | id   | name | +------+------+ |    1 | bobu | |    2 | dsfa | +------+------+ 2 rows in set (0.00 sec)   mysql> select * from hi_tb;  (slave) +------+------+ | id   | name | +------+------+ |    1 | bobu | |    2 | dsfa | +------+------+ 2 rows in set (0.01 sec)   實現了同步。   最後,再次對比一下主從的二進制日志  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved