MySQL主从复制详细部署过程
环境介绍:
采用多实例进行主从复制测试,多实例方法请参考网上其它文档,其实多实例和双服务器对于测试环境来说是一样的。
当前采用3306端口进程为Master,3307端口进程为Slave.
Mysql版本:
mysql> select version();
+-------------+
| version() |
+-------------+
| 5.1.68 |
+-------------+
1 row in set (0.04 sec)
配置过程如下:
1.主库开启bin-log功能,配置server-id
该参数在my.cnf中添加
vi /data3/3306/my.cnf
……
[mysqld]
server-id = 1
log-bin = /data3/3306/mysql-bin
……
可查看命令show variables like 'log_bin'; show variableslike 'server_id';
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
2.在主库上创建复制授权用户
mysql>grant replication slave on *.* to rep@'10.0.0.%' identified by '123456';
QueryOK, 0 rows affected (0.19 sec)
对所有库所有表,授权rep用户只有复制的权限。
3.对数据库锁表只读
mysql>flush tables with read lock;
QueryOK, 0 rows affected (0.07 sec)
该命令退出当前连接数据库后,锁表功能就失效。
4.记录log-bin文件名和位置
mysql>show master status;
+------------------+----------+--------------+------------------+
|File | Position |Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
|mysql-bin.000002 | 340 | | |
+------------------+----------+--------------+------------------+
1row in set (0.00 sec)
该命令需要在锁表后执行,生产环境中每时都有数据写入,只有确保锁表后show master status才准确。
5.导出全部数据
由于退出当前mysql登陆窗口,锁表功能就失效,需克隆一个会话进行全备。
[root@Web01_n~]# mysqldump -B -A --events -S/data3/3306/mysql.sock|gzip >/tmp/3306mysql.sql.gz
[root@Web01_n~]# ll /tmp/3306mysql.sql.gz
-rw-r--r--1 root root 136573 10-29 16:14 /tmp/3306mysql.sql.gz
导完库查看主库状态,确定bin-log信息没有变化
mysql>show master status;
+------------------+----------+--------------+------------------+
|File | Position |Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
|mysql-bin.000002 | 340 | | |
+------------------+----------+--------------+------------------+
1row in set (0.00 sec)
注:由于我的数据库并没有设置用户名和密码,所以未指定-u -p参数。
6.解除锁表
退出锁表登陆窗口或使用命令 unlock tables;
mysql>flush tables with read lock;
QueryOK, 0 rows affected (0.00 sec)
mysql>
mysql>quit
Bye
或
mysql>unlock tables;
QueryOK, 0 rows affected (0.00 sec)
7.从库配置文件配置
[root@Web01_n3307]# netstat -plnt |grep 3307
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 11466/mysqld
[root@Web01_n3307]# kill 11466
[root@Web01_n3307]# netstat -plnt |grep 3307
[root@Web01_n3307]# vi /data3/3307/my.cnf
……
[mysqld]
server-id= 2 #如果ID和master一致,slave的IO线程会起不来
log-bin= /data3/3307/mysql-bin #从库上开启binlog日志功能,一般用于其它从库从这进行复制,也可不加这条命令
……
[root@Web01_n3307]# mysqld_safe --defaults-file=/data3/3307/my.cnf &
[4]11572
[root@Web01_n3307]# 131029 16:56:10 mysqld_safe Logging to'/data3/3307/mysql_oldboy3307.err'.
13102916:56:10 mysqld_safe Starting mysqld daemon with databases from/data3/3307/data
[root@Web01_n3307]# netstat -plnt|grep 3307
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 11751/mysqld
杀掉原先进程,修改配置并重启。重启参数使用mysqld_safe,&是后台执行。
8.导入全部数据至从库
解压备份的数据
[root@Web01_n~]# ll /tmp/
-rw-r--r--1 root root 136573 10-29 16:14 3306mysql.sql.gz
[root@Web01_n~]# gzip -d /tmp/3306mysql.sql.gz #解压gz文件,并删除压缩包
[root@Web01_n~]# ll /tmp/3306mysql.sql
-rw-r--r--1 root root 502068 10-29 16:14 /tmp/3306mysql.sql
导入数据
[root@Web01_n~]# mysql -S /data3/3307/mysql.sock </tmp/3306mysql.sql
9.从库设置change master语句
binlog位置状态为主库show master status查看的位置状态
CHANGEMASTER TO
MASTER_HOST='10.0.0.237',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=340;
演示效果
mysql>CHANGE MASTER TO
-> MASTER_HOST='10.0.0.237',
-> MASTER_PORT=3306,
-> MASTER_USER='rep',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=340;
QueryOK, 0 rows affected (0.01 sec)
配置master的IP,端口,用户,密码,binlog文件名与位置。注意此处的MASTER_LOG_FILE与MASTER_LOG_POS的值为上面主库show master status得到
10.从库开启slave开关
mysql>start slave;
QueryOK, 0 rows affected (0.00 sec)
开启从库的IO线程和SQL线程。也可单独开启,START SLAVE IO_THREAD;START SLAVE SQL_THREAD;
11.从库查看同步状态
mysql>show slave status\G
***************************1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 10.0.0.237
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 340
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes #两个YES代表主从同步线程正常
Replicate_Do_DB:
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: 340
Relay_Log_Space: 400
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:
1row in set (0.00 sec)
命令最后使用;是表格形式,使用\G是行形式。有些内容使用\G更直观。
12.主从同步测试
在master上创建数据库及表,看是否同步。
[root@Web01_n3307]# mysql -S /data3/3306/mysql.sock -e "create database yy1028;"
[root@Web01_n3307]# mysql -S /data3/3307/mysql.sock -e "show databases;"
+--------------------+
|Database |
+--------------------+
|information_schema |
|mysql |
|test |
|test1 |
|yy1028 |
+--------------------+
主从同步测试成功!
其它:
1.在主库上执行show master status;为空问题
因为没有开启bin-log功能,或没有生效。在数据库里查看 show variables like '%log_bin%';看log-bin是否有on托福答案
2. 控制binlog文件过期时间,在my.cnf中加入expire_logs_days = 7 参数,则7天后该binlog日志就自动删除托福答案
MySQL主从复制详细部署过程的更多相关文章
- Mysql学习总结(43)——MySQL主从复制详细配置
环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-mysql ...
- 记一次 mysql主从复制安装配置 过程
mysql主从复制安装配置 1.centos安装及准备 去centos官网下载相应source版本的镜像文件并在vmware中安装,安装中会遇到填写installation source,输入以下即可 ...
- MySQL主从复制的实现过程
一.什么是主从复制 将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做):从而使得从数据库的数据与主数据库保持一致. 二.主从复制的作用 1. ...
- Linux Centos 7 下部署 .NetCore + MySql + Redis + mssql2007 部署过程
1. net core 安装及运行配置 安装 1)rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-p ...
- MySQL 主从复制原理及过程讲解
mysql主从原理描述,摘自老男孩. 下面简 单描述下 MySQL Replication 复制的原理及过程 . 1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复 ...
- MySQL 主从复制 详细实例讲解 与 常见错误解决方法
一.主机ip 192.168.0.128 ,从机ip:192.168.0.130 分别测试是否能ping通对方,如果不能,请关闭防火墙或开放对应端口 二.主服务器配置 1.备份主服务器的数据 mysq ...
- MySQL主从复制配置部署
配置前准备:安装MySQL MySQL在centOS上的安装传送门: 1.集群规划 hadoop105 hadoop106 hadoop107 MySQL(master) MySQL(slave) ...
- Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记
GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
随机推荐
- C# 精准获取代码运行时间
纯粹转载,转载请注明参考链接及作者! 参考链接:http://www.cnblogs.com/ret00100/archive/2010/08/06/1793680.html,作者:博客园 大佬辉 ...
- SendMessage和PostMessage区别以及WPARAM 和 LPARAM区别
WPARAM 和 LPARAM wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:一个是WORD类型的16位整型变量:另一个是LONG类型 ...
- Shader Forge 刀光溶解
实际特效时,时间可以控制vertex color.a,shader forge 还只是玩具,试验用具,离商业产品质量还有差距. 其实,有技术美术的画,很多问题,美术能自己解决,都是一些欠缺通道的问题, ...
- 《Linear Algebra and Its Applications》-chaper3-行列式-行列式初等变换
承接上一篇文章对行列式的引入,这篇文章将进一步记录关于行列式的有关内容,包括如下的几个方面: (1)行列式3个初等变换的证明. (2)转置行列式与原行列式相等的证明. (3)定理det(AB) = d ...
- POJ 3050 穷举
题意:给定一个5*5的地图,每个格子上有一个数字.从一个格子出发(上下左右4个方向),走5步将数字连起来可以构造出一个6位数.问该地图可以构造出多少个不同的6位数. 分析:可以对每个格子做深度优先遍历 ...
- C#快速剔除字符串中不合法的文件名或者文件路径字符
C#快速剔除字符串中不合法的文件名 string strFileName= "文件名称"; StringBuilder rBuilder = new StringBuilder( ...
- ASP.NET中Get和Post的用法
单form的提交有两种方式,一种是get的方法,一种是post 的方法.看下面代码,理解ASP.NET Get和Post两种提交的区别: < form id="form1" ...
- Android中关于Task的一些认识
Android中Task是一个逻辑上的概念,简单地说,就是一个栈里面顺序存储着的多个Activity.这些Activity能够是来自同一个App,也能够是来自不同的Apps. Task的创建 比方之前 ...
- PHP安全编程:HTTP请求欺骗(转)
一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗.这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据. 为了演示这是如何进行的,请看下面位于http://exampl ...
- 第二篇:Power BI数据可视化之基于Web数据的报表制作(经典级示例)
前言 报表制作流程的第一步显然是从各个数据源导入数据,Power BI能从很多种数据源导入数据:如Excel,CSV,XML,以及各类数据库(SQL Server,Oracle,My SQL等),两大 ...