天天看點

mysql主從資料庫配置詳解1.準備工作2.修改master主資料庫配置3.修改slave主資料庫配置4.重新開機master和slave伺服器的mysql5.master主伺服器授權slave6.查詢master主伺服器mysql狀态7.配置slave從伺服器mysql8.檢查slave從伺服器複制功能狀态9.主從mysql伺服器測試

1.準備工作

1.1     master(192.168.142.128)  slave(192.168.142.129)

1.2     master 伺服器與slave伺服器之間應該能夠ping通,并開啟了3306(mysql預設端口)端口

1.3     master伺服器與salve伺服器安裝mysql   (yum install mysql mysql-server)

1.4     master資料庫與slave資料庫版本要保持一緻

1.5     master資料庫與slave資料庫分别設定遠端通路權限(GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;)

2.修改master主資料庫配置

2.1   修改master(192.168.142.128)配置檔案

        # vi /etc/my.cnf

   [mysqld]

   log-bin=mysql-bin  //開啟binlog日志功能(必須)

  server-id=128        //伺服器唯一ID,預設為1,一般取IP最後一位

3.修改slave主資料庫配置

3.1   修改slave(192.168.142.129)配置檔案

        # vi /etc/my.cnf

   [mysqld]

   log-bin=mysql-bin  //開啟binlog日志功能(必須)

  server-id=129  //伺服器唯一ID,預設為1,一般取IP最後一位

4.重新開機master和slave伺服器的mysql

4.1   # /etc/init.d/mysqld restart

5.master主伺服器授權slave

5.1   # mysql -uroot -proot     //登入master主伺服器mysql

        mysql > GRANT REPLICATION SLAVE ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword';

        注:@後面的%代表可以讓所有用戶端連接配接,可授權單獨的ip(192.168.142.129)連接配接

6.查詢master主伺服器mysql狀态

6.1   # mysql -uroot -proot     //登入master主伺服器mysql

         mysql> show master status;          +----------------------------+---------------+------------------------+----------------------------+

          | File                                | Position     | Binlog_Do_DB     | Binlog_Ignore_DB    |

         +----------------------------+---------------+------------------------+----------------------------+

          | mysql-bin.000006      |      378        |                                 |                                       |

         +----------------------------+---------------+------------------------+----------------------------+

         注:執行完此操作後不再對master主伺服器mysql進行操作,防止master主伺服器masql狀态值變化

7.配置slave從伺服器mysql

7.1   # mysql -uroot -proot     //登入slave主伺服器mysql

         mysql> CHANGE MASTER TO MASTER_HOST='192.168.142.128',

           -> MASTER_USER='myuser',

           -> MASTER_PASSWORD='mypassword',

           -> MASTER_LOG_FILE='mysql-bin.000006',

           -> MASTER_LOG_POS=378;

        注:MASTER_HOST                     : master主伺服器ip

                MASTER_USER                     : master主伺服器使用者名

                MASTER_PASSWORD         : master主伺服器密碼

                MASTER_LOG_FILE             : master主伺服器二進制日志檔案

                MASTER_LOG_POS             : master主伺服器二進制日志檔案開始位置

7.2    mysql> start slave;                      //啟動slave從伺服器複制功能

8.檢查slave從伺服器複制功能狀态

8.1   # mysql -uroot -proot     //登入slave主伺服器mysql

        mysql> show slave status\G;

        *************************** 1. row ***************************

                  Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.142.128                                                                 //master主伺服器位址

                  Master_User: root                                                                                         //master主伺服器授權賬戶

                  Master_Port: 3306                                                                                        //master主伺服器mysql資料庫端口

                  Connect_Retry: 60

                  Master_Log_File: mysql-bin.000006                                                       //二進制日志檔案

                  Read_Master_Log_Pos: 378                                                                    //同步讀取二進制日志的位置

                  Relay_Log_File: mysqld-relay-bin.000002

                  Relay_Log_Pos: 524

                  Relay_Master_Log_File: mysql-bin.000006

                  Slave_IO_Running: Yes                                                                           //此狀态必須為YES

                  Slave_SQL_Running: Yes                                                                       //此狀态必須為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: 378

                  Relay_Log_Space: 681

                  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: 0

                  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: 128

注:至此主從伺服器配置完成

9.主從mysql伺服器測試

9.1   # mysql -uroot -proot                                                //登入master主伺服器mysql

         mysql> show databases;                                        //先檢視一下資料庫

         +--------------------------------+

          | Database                         |

         +--------------------------------+

          | information_schema      |

          | mysql                                |

          | performance_schema   |

         +--------------------------------+

        #建立一個test資料庫

        mysql> create database test;                                

        Query OK, 1 row affected (0.01 sec) 

        #選擇資料庫

        mysql> use test;                                                                                                          

        Database changed         

        #建立表

        mysql> CREATE TABLE `user` (                                                                             

                ->   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

                ->   `name` varchar(20) NOT NULL DEFAULT '',

                ->   `age` int(10) unsigned NOT NULL,

                ->   PRIMARY KEY (`id`)

                -> ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

       #插入資料

       mysql> INSERT INTO `user` (`id`,`name`,`age`) VALUES (1,'zhangsan',10);

       Query OK, 1 row affected (0.00 sec)

9.2  驗證奇迹(看看slave資料庫是否已經建立了test資料庫和user表并寫入資料了)

       # mysql -uroot -proot     //登入slave主伺服器mysql

       #先檢視一下資料庫

       mysql> show databases;                                       

       +--------------------------------+

        | Database                         |

       +--------------------------------+

        | information_schema      |

        | mysql                                |

        | performance_schema   |

        | test                                    |

       +--------------------------------+ 

        #選擇資料庫

        mysql> use test;                                                                                                          

        Database changed 

       #檢視表

       mysql> show tables;

      +-------------------------+

       | Tables_in_test       |

      +-------------------------+

       | user                         |

      +-------------------------+

      #檢視資料

      mysql> select * from user;

      +-------+----------------+--------+

       | id      | name           | age    |

      +-------+----------------+--------+

       |  1      | zhangsan    |  10     |

      +-------+----------------+--------+

       至此所有測試完成

繼續閱讀