Heim >Datenbank >MySQL-Tutorial >mysql5.1.73配置主从服务器_MySQL

mysql5.1.73配置主从服务器_MySQL

WBOY
WBOYOriginal
2016-06-01 12:59:451089Durchsuche

一、安装MySQL

这里就详解,请度娘。

二、配置MySQL主服务器(10.241.226.110)

 

mysql -uroot -p #进入MySQL控制台
create database testdb; #建立数据库testdb

#授权用户mysqlcopy只能从10.241.226.111这个IP访问主服务器10.241.226.110上面的数据库,并且只具有数据库备份的权限
grant replication slave on *.* to 'mysqlcopy'@'10.241.226.111' identified by '123456' with grant option;

 

三、把MySQL主服务器10.241.226.110中的数据库testdb导入到MySQL从服务器10.241.226.111中

1、导出数据库testdb

mysqldump -u root -p testdb> /home/testdbbak.sql

备注:在导出之前可以先进入MySQL控制台执行下面命令

flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入

unlock tables; #解除锁定

2、导入数据库到MySQL从服务器

mysql -u root -p #进入从服务器MySQL控制台

create databasetestdb; #创建数据库

usetestdb #进入数据库

source /home/testdbbak.sql #导入备份文件到数据库

mysql -u mysqlcopy-h10.241.226.110 -p #测试在从服务器上登录到主服务器

 

四、配置MySQL主服务器的my.cnf文件

1、vim /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容

log_bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=testdb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql    #不同步mysql系统数据库
server_id = 1   #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
socket =/var/lib/mysql/mysql.sock
character-set-server=utf8

2、service mysqld restart #重启MySQL
3、mysql -u root -p #进入mysql控制台
4、show master status; 查看主服务器,出现以下类似信息
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | testdb | mysql |
+------------------+----------+--------------+------------------+

注意:这里记住File的值:mysql-bin.000001和Position的值:120,后面会用到。

五、配置MySQL从服务器的my.cnf文件

1、vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容

 

log_bin=mysql-bin   #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=testdb
replicate-ignore-db=mysql
read_only=1
server_id = 2    #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8 

 

2、service mysqld restart #重启MySQL

3、mysql -u root -p #进入MySQL控制台

4、slave stop; #停止slave同步进程

5、change master to master_host='10.241.226.110',master_user='mysqlcopy',master_password='123456',master_log_file='mysql-bin.000001,master_log_pos=120; #执行同步语句

6、slave start; #开启slave同步进程

7、SHOW SLAVE STATUS\G #查看slave同步信息,部分内容如下:

 

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.241.226.111
                  Master_User: mysqlcopy
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 377
               Relay_Log_File: localhost-relay-bin.000003
                Relay_Log_Pos: 540
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: DB_CLOUDCORE
          Replicate_Ignore_DB: mysql
           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: 377
              Relay_Log_Space: 717
              Until_Condition: None
               Until_Log_File:

 

注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

六、测试MySQL主从服务器双机热备是否成功

1、进入MySQL主服务器

mysql -u root -p #进入主服务器MySQL控制台

use testdb; #进入数据库

CREATE TABLE test ( id int not null); #创建test表

2、进入MySQL从服务器

mysql -u root -p #进入MySQL控制台

usetestdb; #进入数据库

show tables;

会看到有一个新建的表test,表示数据库同步成功

 

问题:

1、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

解:由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错

为mysql.sock增加软连接(相当于windows中的快捷方式)。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn