`

Mysql主从结构

阅读更多
一、mysql主从的原理
1、Replication 线程
Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。
要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。

MySQL的主从同步是一个很成熟的架构,优点为:
①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;
②在从主服务器进行备份,避免备份期间影响主服务器服务;
③当主服务器出现问题时,可以切换到从服务器。
所以我在项目部署和实施中经常会采用这种方案.

+ 数据库目录及其它
my.cnf配置文件     /etc/my.cnf
mysql数据库位置    datadir=/var/lib/mysql

主数据库:192.168.2.119
从数据库:192.168.2.220
操作系统:RHEL5.x 32位
服务器类型: 虚拟机

+ mysql5.0.77 安装:
① 配置好linux的yum服务后,直接yum -y install mysql即可
附:安装php\mysql一条命令安装:yum -y install httpd php mysql mysql-server php-mysql

② 启动MySQL
service mysqld start(restart|stop)


一、设置主库
1、修改主库my.cnf,主要是设置个不一样的id和logbin(#这部可依具体环境而定,压力大的化可采用huge.cnf)
[root@localhost etc]#vi /etc/my.cnf
# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql

2、启动主库生效
[root@localhost etc]service mysqld restart

3、登陆主库
[root@localhost etc]mysql -u root -p

4、赋予从库权限帐号,允许用户在主库上读取日志
mysql> grant all privileges on *.* to '用户名'@'%' identified by '密码';

5、检查创建是否成功
select user,host from mysql.user;

6、锁主库表
mysql> flush tables with read lock;

7、显示主库信息
记录File和Position,从库设置将会用到
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 98   |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

# 说明,如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。

8、另开一个终端登陆220,打包主库迁移数据(如果你使用的yum安装,有默认数据库并未做任何改动,则不需要进行拷贝)
目的是为了保证两台服务器的mysql数据库一致,这里可以自行tar打包或者使用mysqldump命令备份恢复的方式进行。


二、设置从库
1、传输拿到主库包、解包
# 登陆从库
从上一步中备份的数据库恢复到220服务器节点上。

2、在119节点上解锁主库表(对应第一点设置主库中第6步锁主库表的操作)
mysql> unlock tables;

3、在220节点上修改从库my.cnf(位置一样)
[root@localhost etc]vi my.cnf
# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档
[mysqld]
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

master-host=192.168.2.119
master-user=root
master-password=pfingo

4、在220节点上验证连接主库
[root@localhost etc]mysql -h 192.168.2.119 -u 用户名 -p

5、在220节点从库上设置同步
#设置连接MASTER MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position
#注意下面第二条命令语句中的master_log_file='mysql-bin.000001', master_log_pos=98;对应为前面在主库中执行的show master status;结果
mysql> slave stop;
mysql> change master to master_host='192.168.2.119',master_user='root',master_password='pfingo',master_log_file='mysql-bin.000001', master_log_pos=98;
mysql> slave start;

6、启动从库服务
mysql> slave start;

7、进行测试
在主库上的test库上建立名为myTest的表
mysql> CREATE TABLE `myTest` (
`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 20 ) NOT NULL ,
`password` CHAR( 32 ) NOT NULL ,
`last_update` DATETIME NOT NULL ,
`number` FLOAT( 10 ) NOT NULL ,
`content` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

在从表中马上看到了效果,主从同步成功了;
为了更进一步验证在从库上输入show slave status\G;
mysql> show slave status\G;
Slave_IO_Running: Yes(网络正常);
Slave_SQL_Running: Yes(表结构正常)

进一步验证了以上过程的正确性。
分享到:
评论

相关推荐

    Kubernetes部署-使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

    该资源是使用kubernetes部署Mysql主从结构,整个步骤包括: 1. 编写namespace脚本,创建专门的namespace 2. 编写configmap,将mysql的配置文件配置到里面 3. 编写secret脚本,将需要的密码配置在里面 4. 编写init...

    mysql主从库配置

    ### MySQL 主从库配置详解 ...通过以上步骤,我们可以成功搭建起 MySQL 的主从库结构,实现了数据的自动同步。这种架构不仅可以提高数据的安全性,还可以通过合理规划负载均衡策略,提升整体系统的性能。

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    在本讲中,我们将深入探讨如何使用SpringBoot与MySQL实现主从复制以及读写分离的架构设计。这一技术方案在大型分布式系统中尤为常见,它能够有效地提高数据库系统的可用性和性能。 首先,让我们理解主从复制的核心...

    MySql主从同步监控程序源码

    MySQL主从同步是数据库高可用性和数据一致性的关键机制,特别是在大型分布式系统中。这个名为"MySql主从同步监控程序源码"的项目是用C#语言开发的,旨在帮助管理员实时监控MySQL数据库的主从复制状态,确保数据在...

    MYsql主从复制.docx

    "Mysql主从复制" Mysql主从复制是一种常用的数据库复制方式,旨在提高数据库的可用性、安全性和读取性能。在Mysql主从复制中,一个数据库服务器充当主服务器,其他服务器充当从服务器。主服务器负责写入数据,而从...

    MySQL主从不一致检查与修复

    MySQL主从不一致问题在分布式数据库环境中经常遇到,它可能会导致数据丢失、业务中断等严重后果。本主题将深入探讨MySQL主从不一致的原因、检查方法以及修复策略,旨在帮助数据库管理员有效地解决这类问题。 一、...

    12.1: MySQL主从同步 、 主从同步模式 、 总结和答疑.docx

    MySQL主从同步配置和实现 MySQL主从同步是指将一个MySQL服务器的数据实时地复制到另一个或多个服务器上,以实现数据的高可用性和灾难恢复。这种方式可以实现数据的热备援、读写分离、负载均衡等功能。 1. 案例 1:...

    Mysql主从部署.docx

    MySQL主从部署是数据库管理中的常见操作,用于实现数据的实时备份和高可用性。以下是一份基于MySQL 5.7.22的详细部署步骤: 1. **环境检查与准备**: 在开始之前,确保系统中没有旧版本的MySQL。通过`rpm -qa | ...

    部署mysql主从同步结构操作指引文档.rar

    部署mysql主从同步结构操作指引及工具软件 1、数据库安装包:mysql-5.7.32-winx64.zip 2、数据库客户端:SQLyog 8.14.rar 3、说明文档:部署mysql主从同步结构操作指引文档.doc

    windows环境下MyCAT+mysql主从配置.pdf

    ### Windows环境下MyCAT+MySQL主从配置详解 #### 一、概述 ...通过上述步骤,可以在Windows环境下成功配置MySQL主从结构并结合Mycat数据库中间件,为企业的数据管理和应用提供高效、稳定的支持。

    mysql主从复制原理详解图

    详细的结构分解,可以快速了解mysql主从复制的原理和对主从更清晰的了解。

    MySQL 主从原理、问题、解决方案和应用-淘宝大牛丁奇

    #### 一、MySQL主从同步基本流程 在MySQL中,主从同步是一种常见的数据复制机制,用于实现数据的高可用性和负载均衡。其基本流程主要包括以下几个步骤: 1. **Master端**:在Master服务器上,每当有数据更改操作时...

    mysql主从备份

    MySQL主从备份是一种常见的数据库高可用性和数据安全性解决方案。它通过在主服务器上执行写操作,然后将这些更改同步到一个或多个从服务器来实现。这样可以确保即使主服务器发生故障,从服务器也能接管服务,避免...

    高可用MYSQL,主从复制,集群和负载平衡

    高可用MYSQL主从复制、集群和负载平衡 MySQL 集群是指将多个 MySQL 服务器组合成一个集群,以提高数据库的可用性、可扩展性和性能。MySQL 集群可以分为多种类型,例如主从复制集群、多主多从集群、负载平衡集群等...

    win系统下的mysql主从同步配置

    MySQL主从同步是数据库架构中常见的一种高可用性解决方案。它可以实现数据的实时备份,分担主库读写操作压力,并提供数据的热备份。在Windows操作系统下配置MySQL主从同步涉及多个步骤,以下将详细解读配置的原理、...

    小记一次mysql主从配置解决方案

    最终,用户选择了后者,即在虚拟机中配置MySQL主从结构。 1. **MySQL主从配置步骤**: - **设置网络连接**:确保虚拟机的网络设置为桥接模式,使虚拟机与主机在同一网络段,可以互相访问。 - **配置主服务器...

Global site tag (gtag.js) - Google Analytics