MySQL数据库的主从复制详解

来源:互联网 发布:oanda 数据接口 编辑:程序博客网 时间:2024/05/22 04:25


配置机器:

   master server 192.168.0.40

   slave  server  192.168.0.208  ,此机器上MySQL版本为5.5.29

接下来开始配置,首先是master server

 

一、master server
1. 配置my.cnf
   vim /etc/my.cnf
  在[mysqld]中添加
   server-id    =1              //1表示为Master,不需要更改
   log-bin=mysql-bin       //日志为二进制,无需更改
   binlog_format=mixed   //二进制日志的格式,无需更改
   binlog-do-db=chinaetax_2_0              //同步的数据库(可以有多个)
   binlog-do-db=cms_2_0                       //同步的数据库
   binlog-ignore-db=mysql,test,information_schema   //不需要同步的数据库名,多个数据库中间用逗号(,)隔开
 
 
  然后把innodb前面的#去掉,结果如下
  innodb_data_home_dir = /usr/local/mysql/data/      //innodb的表空间位置
  innodb_data_file_path = ibdata1:50M:autoextend     //表空间的名字,开始50M
  innodb_log_group_home_dir = /usr/local/mysql/data/ 
  innodb_buffer_pool_size = 256M                     //为系统内存的50-80%
  innodb_additional_mem_pool_size = 20M
  innodb_log_file_size = 64M
  innodb_log_buffer_size = 8M
  innodb_flush_log_at_trx_commit = 1
  innodb_lock_wait_timeout = 50
 
  然后重启数据库,让配置文件生效
  #service mysqld restart
或者  先停止mysql服务,再开启服务
  #service mysqld stop
  #/etc/init.d/mysqld start
 
2、在master server上添加授权账号,用于slave server对master server的访问
 
 格式:GRANT REPLICATION SLAVE ON *.* TO '帐号'@'从服务器IP或主机名' IDENTIFIED BY '密码';

 登录mysql服务器
    #mysql -u root -p
 授权
    mysql>grant replication slave on *.* to repluser@'192.168.0.208' identified by '123456';
 刷新权限列表
    mysql>flush privileges;
 

 
3、备份master server上数据库(两种方式)
第一种:
  mysql> flush tables with read lock;  //读锁
 
  同时要记录下mysql-bin.000006和1135164
  mysql> show master status;

+----------------------------+---------- +--------------------------- + --------------------------------------------------------------------+
| File                               | Position | Binlog_Do_DB         | Binlog_Ignore_DB                                                          |
+----------------------------+---------- +--------------------------- + --------------------------------------------------------------------+
| mysql-bin.000006     |1135164 | chinaetax,cms_2_0    | mysql,information_schema,performance_schema,|
+---------------------------- +---------- +--------------------------- + --------------------------------------------------------------------+
1 row in set (0.00 sec)
1 row in set (0.01 sec)
取得快照并记录日志名和偏移量
 
开启另一个终端对主服务器数据目录做备份。
#cd /usr/local/mysql/data
#tar -zcvf backup.tar.gz www blog
 
此时在主库解开table的锁定
mysql> unlock tables;
 
第二种:
#mysqldump -uroot -p -l -F databasename > 路径
 
二、slave server
 
1. vim /etc/my.cnf
  log-bin=mysql-bin                                           // 开启bin-log日志
  binlog_format=mixed
  server-id  = 2                                                  //server-id不能和master server相同,即不能为1
  master-host     =   192.168.0.40                        //以下5个配置项在mysql5.5版本以后废弃
  master-user     =   repluser
  master-password =   123456
  master-port     =  3306
  master-connect-retry=60
  replicate-do-db=chinaetax_2_0   //告诉slave只做www数据库的更新 
  replicate-do-db=cms_2_0           //告诉slave只做blog数据库的更新 

  一开始,我也是按照上面这样配置的,可是,服务器总是启动不了,报这样的错误,不知大家有没有遇到过,
  The server quit without updating PID file,
后来,查看mysql错误日志,是这样写的,
 
最后在官网上,看到了这个

终于明白了

 !!!注意:从MySQL5.5版本开始,master-host,master-user,master-password,等变量已移除,所以才会出现上面的错误,可以在登录mysql服务器控制台后,用change master to命令动态改变配置
所以,如果mysql版本是5.5以上,这一步只需配置前三项和后两项即可,然后重启服务器
#service mysqld start

2、把从主数据库服务器备份出来的数据库导入到从服务器中
  先用scp把主服务器上的backup.tar.gz拷贝过来,解压到/usr/local/mysql/data目录
   #scp backup.tar.gz 192.168.0.208:/usr/local/mysql/data
   #cd /usr/local/mysql/data
   #tar -xzvf backup.tar.gz
 
  如果是用mysqldump备份的数据库,在208服务器上直接用mysql命令导入数据库即可,过程略过
 
 
3、对于mysql 5.5以上,这一步必须配置

  停止slave服务,设置主服务器的各种参数
     mysql>slave stop;
  然后敲入以下代码,一行一行的复制
     mysql>change master to
                MASTER_HOST='192.168.0.40',
                MASTER_USER='repluser',
                MASTER_PASSWORD='123456',
                MASTER_LOG_FILE='mysql-bin.000006',
                MASTER_LOG_POS=1135164;
    mysql> slave start;
 
OK,以上配置结束。

 敲入以下命令,查看是否配置成功。
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.40
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000006
          Read_Master_Log_Pos:1135164
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 617
        Relay_Master_Log_File: mysql-bin.000006
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: chinaetax_2_0,cms_2_0
          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: 1271
              Relay_Log_Space: 773
              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:
1 row in set (0.01 sec)
 
 在以上各项中,保证以下两项为Yes,说明成功。
 
           Slave_IO_Running
               是否要从 Master Server 复制 Binary Log日志,必须为 Yes
 
           Slave_SQL_Running
               是否要执行从 Master Server复制过来的 Binary Log日志,必须为 Yes
 


然后在master上添加数据
再在slave server上查询,发现数据斗能更新过来,成功。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4s微信版本过低怎么办 换了一个城市牵的电信网线怎么办 联通电话卡注销了里面的钱怎么办 红米4a上网太慢怎么办 华为光猫网线接囗接触不良怎么办? 苹果电信4g信号变3g怎么办 苹果7的4g变3g了怎么办 华为路由器的登录密码忘记了怎么办 华为手机有4g但不能上网怎么办 移动4g 手机开密码忘了怎么办 华为安卓8.0屏幕上圆怎么办 苹果5s不能用4g怎么办 电动车的锁住了钥匙丢了怎么办 小米蓝牙耳机青春版开不了机怎么办 小米蓝牙耳机进水了开不了机怎么办 新买的蓝牙耳机开不了机怎么办 蓝牙耳机长时间不用开不了机怎么办 瑞和宝pos机无法连接蓝牙怎么办 手机做话筒连蓝牙音箱不同步怎么办 荣耀畅玩7x触屏不灵怎么办 华为6x屏幕点没反应怎么办 苹果耳机按一下就挂断电话怎么办 华为畅享7忘记账号密码怎么办 华为荣耀8手机外放声音小怎么办 安卓手机耳机减音量不能用怎么办 苹果手机微信语音是耳机模式怎么办 平果手机没声音出现耳机模式怎么办 苹果6s进水了一直耳机模式怎么办 华为手机没声音显示耳机模式怎么办 华为手机没声音出现耳机模式怎么办 安卓手机全民k歌耳返延迟怎么办 华为手机双清后手机开不了机怎么办 荣耀9上面有个耳机标志怎么办 华为p9耳机有一个没有声音怎么办 小米5c手机gps信号弱怎么办 华为8手机时常听常音乐声怎么办 手机用久了变慢了怎么办 免税店买的皮带太短了怎么办 小米手机自拍照片是反的怎么办 华为p20旅行助手被删了怎么办 假如手机点击一个链接是病毒怎么办