mysql5.5.23主从复制配置方法

本篇内容介绍了“MySQL5.5.23主从复制配置方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站专注于企业成都全网营销推广、网站重做改版、正宁网站定制设计、自适应品牌网站建设、H5建站商城开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为正宁等各大城市提供网站开发制作服务。

   mysql的主从复制是一个很成熟的开源架构,很多IT公司都喜欢使用这种方案。这种方案的优点比较明显:1、在从库上执行查询,降低主库的压力。2、在从库上进行备份,可以避免备份期间影响主库的性能和服务。3、在主库出现问题时,可以方便的切换到从库,以避免业务停滞。

   下面具体介绍一下配置的过程:

   主库:10.4.14.51  

   从库:10.4.14.52  

   操作系统:centos6.4  

   服务器:HP580G7

一、在两台服务器上安装MYSQL

   MYSQL的安装采用源码编译的方式,这样的性能会比较好。    

#useradd mysql

#passwd mysql

#groupadd mysql

#useradd -g mysql mysql

#mkdir -p /data/local/mysql

#mkdir -p /data/mysql/data

#chown -R mysql:mysql /data/local/mysql

#chmod -R 755 /data/local/mysql

#chown -R mysql:mysql /data/mysql

#chmod -R 755 /data/mysql

#yum -y install cmake bison ncurses ncurses-devel gcc-c++ libstdc++

(可以配置本地YUM源或外部镜像源)

#tar zxvf mysql-5.5.23.tar.gz
#cd mysql-5.5.23

#cmake -DCMAKE_INSTALL_PREFIX=/data/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data

#make && make install

二、MYSQL的主从复制配置

1、设置主库

编辑/etc/my.cnf

在[mysqld]下加入

server-id = 1

binlog-ignore-db = mysql

binlog-ignore-db = test

binlog-do-db = meihui7

进入MYSQL

mysql> grant replication slave on *.* to meihui7@10.4.14.52 identified by '123456';

Query OK, 0 rows affected (0.00 sec)

然后检查一下,是否创建成功

mysql> select user,host from mysql.user;

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

| user    | host                  |

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

| meihui7 | 10.4.14.52            |

| root    | 127.0.0.1             |

| root    | ::1                   |

|         | localhost             |

| root    | localhost             |

|         | localhost.localdomain |

| root    | localhost.localdomain |

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

7 rows in set (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000015 |      421 |              |                  |

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

1 row in set (0.00 sec)

在这里需要记下FILE和Position的值,在从库上配置需要用到。

2、设置从库

编辑/etc/my.cnf

在[mysqld]下加入

server-id = 2      #注意如果配置文件中有此句,也可直接启用同时把server-id=1屏蔽

replicate-do-db = meihui7

replicate-ignore-db = mysql

replicate-ignore-db = test

保存退出

mysql> change master to master_host='10.4.14.51',master_user='meihui7',master_password='123456', master_log_file='mysql-bin.000015',master_log_pos=421;

Query OK, 0 rows affected (0.02 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;

mysql5.5.23主从复制配置方法

注意这两项要为YES

如果有报错,比如

Slave_IO_Running: No

Slave_SQL_Running: Yes

Last_IO_Errno: 1593

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

这个一般是说从库和主库上的SERVER-ID一样了,导致出错。

可以去修改MY.CNF文件,也可以这样来更改

查看server-id
mysql> show variables like 'server_id';
手动修改server-id
mysql> set global server_id=2;       #此处的数值和my.cnf里设置的一样就行

然后启动SLAVE

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;

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

              Slave_IO_State: Waiting for master to send event

                 Master_Host: 10.4.14.51

                 Master_User: meihui7

                 Master_Port: 3306

               Connect_Retry: 60

             Master_Log_File: mysql-bin.000015

         Read_Master_Log_Pos: 421

              Relay_Log_File: test2-relay-bin.000019

               Relay_Log_Pos: 567

       Relay_Master_Log_File: mysql-bin.000015

            Slave_IO_Running: Yes

           Slave_SQL_Running: Yes


好了,都正常了。

有时候在启动SLAVE时,会报这个错。

mysql> start slave;

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

出现这个问题的原因是之前曾做过主从复制!

解决方案是:

  • 运行命令 stop slave;

  • 成功执行后继续运行 reset slave;

  • 然后重新设置主从复制,再start slave

补充:如果开始的环境不是主从架构,运行一段时间已经有了数据,这时候要先在主机上加锁:flush tables with read lock;通过mysqldump备份一下,然后在从库上导入。再做主从的配置。然后解锁:unlock tables;show slave      

status\G;

三、验证主从复制

在10.4.14.51上的meihui7上建张表

mysql>  create table t1 (PID int,name varchar(20));

Query OK, 0 rows affected (0.04 sec)

然后再在10.4.14.52的从库上检查一下

mysql> use meihui7;

Database changed

mysql> show tables;

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

| Tables_in_meihui7 |

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

| t1                |

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

1 row in set (0.00 sec)

发现已经有了,同步成功。

总结:mysql的主从复制很快,一般来说小数据量的改变感觉不到延迟。通常这种模式适合对延时性要求低的工作环境,比如论坛和相册空间等。

注意:

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。

“mysql5.5.23主从复制配置方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

网站题目:mysql5.5.23主从复制配置方法
分享URL:https://www.cdcxhl.com/article48/igehhp.html

成都网站建设公司_创新互联,为您提供小程序开发关键词优化网站收录建站公司移动网站建设商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计