1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > CentOS 6.4系统MySQL主从复制基本配置实践

CentOS 6.4系统MySQL主从复制基本配置实践

时间:2019-04-23 21:14:28

相关推荐

CentOS 6.4系统MySQL主从复制基本配置实践

数据库|mysql教程

CentOS,6.4,系统,MySQL,主从,复制,基本配置

数据库-mysql教程

asp网站源码安装地址,恢复删除文件 ubuntu,tomcat主要目录有,post爬虫教程,怎么用php编辑qq聊天,SEO效果差lzw

对于MySQL数据库一般用途的主从复制,可以实现数据的备份(如果希望在主节点失效后,能够使从节点自动接管,就需要更加复杂的配置,这里暂时先不考虑),如果主节点出现硬件故障,数据库服务器可以直接手动切换成备份节点(从节点),继续提供服务。基本的主

培训门户网源码,vscode配置当前目录,ubuntu 硬盘不足,tomcat 分布部署,sqlite数据库的大小,爬虫的相关书籍和论文,php 相似图片,谷歌seo真实例子,下载类网站源码asp,易语言 获取网页源码 失败,好看的手机云电影网站模板lzw

treeview 源码,ubuntu配置外网访问,许昌长葛网络爬虫,php数据库管理工具绿色正式版,seo咨询 遵义lzw

对于MySQL数据库一般用途的主从复制,可以实现数据的备份(如果希望在主节点失效后,能够使从节点自动接管,就需要更加复杂的配置,这里暂时先不考虑),如果主节点出现硬件故障,数据库服务器可以直接手动切换成备份节点(从节点),继续提供服务。基本的主从复制配置起来非常容易,这里我们做个简单的记录总结。

我们选择两台服务器来进行MySQL的主从复制实践,一台m1作为主节点,另一台nn作为从节点。

两台机器上都需要安装MySQL数据库,如果想要卸掉默认安装的,可以执行如下命令:

sudo rpm -e --nodeps mysqlyum list | grep mysql

现在可以在CentOS 6.4上直接执行如下命令进行安装:

sudo yum install -y mysql-server mysql mysql-deve

为root用户设置密码:

mysqladmin -u root password shiyanjun

然后可以直接通过MySQL客户端登录:

mysql -u root -p

主节点配置

首先,考虑到数据库的安全,以及便于管理,我们需要在主节点m1上增加一个专用的复制用户,使得任意想要从主节点进行复制从节点都必须使用这个账号:

CREATE USER repli_user;GRANT REPLICATION SLAVE ON *.* TO epli_user@\% IDENTIFIED BY shiyanjun;

这里还进行了操作授权,使用这个换用账号来执行集群复制。如果想要限制IP端段,也可以在这里进行配置授权。

然后,在主节点m1上,修改MySQL配置文件/etc/f,使其支持Master复制功能,修改后的内容如下所示:

[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0server-id=1log-bin=m-binlog-bin-index=m-bin.index[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

server-id指明主节点的身份,从节点通过这个server-id来识别该节点是Master节点(复制架构中的源数据库服务器节点)。

如果MySQL当前已经启动,修改完集群复制配置后需要重启服务器:

sudo service mysqld restart

从节点配置

接着,类似地进行从节点nn的配置,同样修改MySQL配置文件/etc/f,使其支持Slave端复制功能,修改后的内容如下所示:

[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0server-id=2relay-log=slave-relay-binrelay-log-index=slave-relay-bin.index[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

同样,如果MySQL当前已经启动,修改完集群复制配置后需要重启服务器:

sudo service mysqld restart

然后,需要使从节点nn指向主节点,并启动Slave复制,执行如下命令:

CHANGE MASTER TO MASTER_HOST=m1, MASTER_PORT=3306, MASTER_USER= epli_user, MASTER_PASSWORD=shiyanjun;START SLAVE;

验证集群复制

这时,可以在主节点m1上执行相关操作,验证从节点nn同步复制了主节点的数据库中的内容变更。

如果此时,我们已经配置好了主从复制,那么对于主节点m1上MysQL数据库的任何变更都会复制到从节点nn上,包括建库建表、插入更新等操作,下面我们从建库开始:

在主节点m1上建库建表:

CREATE DATABASE workflow;CREATE TABLE `workflow`.`project` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `type` tinyint(4) NOT NULL DEFAULT , `description` varchar(500) DEFAULT NULL, `create_at` date DEFAULT NULL, `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `status` tinyint(4) NOT NULL DEFAULT , PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在m1上查看binlog内容,执行命令:

SHOW BINLOG EVENTS\G

binlog内容内容如下所示:

*************************** 1. row *************************** Log_name: m-bin.000001 Pos: 4Event_type: Format_desc Server_id: 1End_log_pos: 106 Info: Server ver: 5.1.73-log, Binlog ver: 4*************************** 2. row *************************** Log_name: m-bin.000001 Pos: 106Event_type: Query Server_id: 1End_log_pos: 197 Info: CREATE DATABASE workflow*************************** 3. row *************************** Log_name: m-bin.000001 Pos: 197Event_type: Query Server_id: 1End_log_pos: 671 Info: CREATE TABLE `workflow`.`project` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `type` tinyint(4) NOT NULL DEFAULT , `description` varchar(500) DEFAULT NULL, `create_at` date DEFAULT NULL, `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `status` tinyint(4) NOT NULL DEFAULT , PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf83 rows in set (0.00 sec)

通过上述binlog内容,我们大概可以看到MySQL的binlog都记录那些信息,一个事件对应一行记录。这些记录信息的组织结构如下所示:

Log_name:日志名称,指定的记录操作的binlog日志名称,这里是m-bin.000001,与我们前面在/etc/f中配置的相对应

Pos:记录事件的起始位置

Event_type:事件类型

End_log_pos:记录事件的结束位置

Server_id:服务器标识

Info:事件描述信息

然后,我们可以查看在从节点nn上复制的情况。通过如下命令查看从节点nn上数据库和表的信息:

SHOW DATABASES;USE workflow;SHOW TABLES;DESC project;

我们再看一下执行插入语句的情况。在主节点m1上执行如下SQL语句:

INSERT INTO `workflow`.`project` VALUES(1, Avatar-II, 1, Avatar-II project, -02-16, -02-16 11:09:54, 0);

可以在从节点上执行查询,看到从节点nn上复制了主节点m1上执行的INSERT语句的记录:

SELECT * FROM workflow.project;

验证复制成功。

复制常用命令

下面,我们总结了几个在MySQL主从复制场景中常用到的几个相关命令:

终止主节点复制

STOP MASTER;

清除主节点复制文件

RESET MASTER;

终止从节点复制

STOP SLAVE;

清除从节点复制文件

RESET SLAVE;

查看主节点复制状态

SHOW MASTER STATUS\G;

结果示例:

*************************** 1. row *************************** File: m-bin.000001 Position: 956 Binlog_Do_DB:Binlog_Ignore_DB:1 row in set (0.00 sec)

查看从节点复制状态

SHOW SLAVE STATUS\G;

结果示例:

*************************** 1. row ***************************Slave_IO_State: Waiting for master to send event Master_Host: m1 Master_User: repli_user Master_Port: 3306Connect_Retry: 60 Master_Log_File: m-bin.000001Read_Master_Log_Pos: 956Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 1097 Relay_Master_Log_File: m-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: 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: 0Exec_Master_Log_Pos: 956 Relay_Log_Space: 1252 Until_Condition: NoneUntil_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: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:1 row in set (0.00 sec)

查看BINLOG列表

SHOW BINARY LOGS\G

原文地址:CentOS 6.4系统MySQL主从复制基本配置实践, 感谢原作者分享。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。