天天看点

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     |

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

       至此所有测试完成

继续阅读