mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例

《MysqL教程MysqL 复制详解及简单实例》要点:

本文介绍了MysqL教程MysqL 复制详解及简单实例,希望对您有用。如果有疑问,可以联系我们。

MysqL 复制详解及简单实例

主从复制技术在MysqL中被广泛使用,主要用于同步一台服务器上的数据至多台从服务器,可以用于实现负载均衡,高可用和故障切换,以及提供备份等等.MysqL支持多种不同的复制技术,诸如单向,半同步异步复制等以及不同级别的复制,诸如数据库级别,表级,跨库同步等等.本文简要描述了一个基本的主从复制并给出示例.

1、复制的基本原理(步骤)

a、在主库上把数据更改记录的二进制日志(binary log)

b、从库上的I/O线程连接到主库并请求发送其二进制日志文件(主库上的binlog dump线程将二进制日志内容发送到从库)

c、从库上的I/O线程读取主服务发送的二进制内容并将其拷贝到中继日志

d、从库上的sql线程读取中继日志并执行日志中包含的更新

# 本文的演示基于同一服务器上的多实例环境,其中3406端口用作主库,而3506用作从库.

# 关于多实例的部署可参考:

# MysqL多实例配置(一) http://blog.csdn.net/leshami/article/details/40339167

# MysqL多实例配置(二) http://blog.csdn.net/leshami/article/details/40339295

# 3406与3506为都为新装且含缺省库等,所以本文演示中未涉及先迁移主库数据到备库步骤

a、主库上的配置文件

# more my3406.cnf

[MysqLd]

socket = /tmp/MysqL3406.sock

port = 3406

pid-file = /data/inst3406/data3406/my3406.pid

user = MysqL

log-error=/data/inst3406/data3406/inst3406.err

datadir=/data/inst3406/data3406

basedir=/app/soft/MysqL5

#### for master items ####

server-id=3406

log_bin=/data/inst3406/log/bin/inst3406bin

innodb_flush_log_at_trx_commit=1

sync_binlog=1

b、从库上的配置文件

# more my3506.cnf

[MysqLd]

socket = /tmp/MysqL3506.sock # Author : Leshami

port = 3506 # Blog : http://blog.csdn.net/leshami

pid-file = /data/inst3506/data3506/my3506.pid

user = MysqL

log-error=/data/inst3506/data3506/inst3506.err

datadir=/data/inst3506/data3506

basedir=/app/soft/MysqL5

#### for slave items ####

server-id=3506

relay_log=/data/inst3506/log/relay/relay-bin

read_only=1

3、创建复制账号

#启动端口为3406的实例并添加账户

[MysqL@app ~]$ MysqLd_safe --defaults-file=/data/inst3406/data3406/my3406.cnf &

[MysqL@app ~]$ MysqL -P3406 #登陆到3406

master@localhost[(none)]> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id | 3406 |

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

#创建用于复制的账户

master@localhost[(none)]> grant replication slave,replication client on *.*

-> to repl@'192.168.1.177' identified by 'repl';

#初始化主库日志文件,生成环境慎用reset

master@localhost[(none)]> reset master;

Query OK,0 rows affected (0.01 sec)

#查看主库的状态,日志初始化至000001,master@localhost[(none)]> show master status,Position为120

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| inst3406bin.000001 | 120 | | | |

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

4、配置主从同步

#启动端口为3506的实例

[MysqL@app ~]$ MysqLd_safe --defaults-file=/data/inst3506/data3506/my3506.cnf &

[MysqL@app ~]$ msyql -P3506

slave@localhost[(none)]> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id | 3506 |

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

1 row in set (0.00 sec)

#为从库添加指向主库的相关配置信息,该命令会生成及修改备库上的master.info及relay-log.info文件

slave@localhost[(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.177',-> MASTER_USER='repl',-> MASTER_PASSWORD='repl',-> MASTER_PORT=3406,-> MASTER_LOG_FILE='inst3406bin.000001',-> MASTER_LOG_POS=0;

Query OK,0 rows affected,2 warnings (0.04 sec)

#出现了2个warnings,查看一下

slave@localhost[(none)]> show warnings \G

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

Level: Note

Code: 1759

Message: Sending passwords in plain text without SSL/TLS is extremely insecure.

*************************** 2. row ***************************

Level: Note

Code: 1760

Message: Storing MysqL user name or password information in the master.info repository is not secure and is therefore not recommended.

Please see the MysqL Manual for more about this issue and possible alternatives.

2 rows in set (0.00 sec)

#此时查看从库的状态信息

slave@localhost[(none)]> show slave status \G

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

Slave_IO_State:

Master_Host: 192.168.1.177

Master_User: repl

Master_Port: 3406

Connect_Retry: 60

Master_Log_File: inst3406bin.000001

Read_Master_Log_Pos: 4

Relay_Log_File: relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: inst3406bin.000001

Slave_IO_Running: No #IO线程没有运行

Slave_sql_Running: No #sql线程没有运行

......................

Master_Info_File: /data/inst3506/data3506/master.info

slave@localhost[(none)]> start slave; #启动slave

Query OK,0 rows affected (0.01 sec)

#含义如下

START SLAVE with no thread_type options starts both of the slave threads. The I/O thread reads

events from the master server and stores them in the relay log. The sql thread reads events from the

relay log and executes them.

#再次查看slave的状态

robin@localhost[(none)]> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.177

Master_User: repl

Master_Port: 3406

Connect_Retry: 60

Master_Log_File: inst3406bin.000001

Read_Master_Log_Pos: 120

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 285

Relay_Master_Log_File: inst3406bin.000001

Slave_IO_Running: Yes #IO线程处于运行状态

Slave_sql_Running: Yes #sql线程处于运行状态

..............

Exec_Master_Log_Pos: 120

Relay_Log_Space: 452

............

Master_Server_Id: 3406

Master_UUID: 32f53a0a-63ef-11e4-93d9-8c89a5d108ae

Master_Info_File: /data/inst3506/data3506/master.info

sql_Delay: 0

sql_Remaining_Delay: NULL

Slave_sql_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it #重要的提示信息

#可以看到从库上的2个线程,一个是用于I/O线程,用于连接到主库请求主库发送binlog,一个是用于执行sql的sql线程.

slave@localhost[(none)]> show processlist\G

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

Id: 4

User: system user

Host:

db: NULL

Command: Connect

Time: 510993

State: Waiting for master to send event

Info: NULL

*************************** 2. row ***************************

Id: 5

User: system user

Host:

db: NULL

Command: Connect

Time: 333943

State: Slave has read all relay log; waiting for the slave I/O thread to update it

Info: NULL

5、验证同步情况

#下面在主库上执行一些操作以检查从库的同步情况

master@localhost[(none)]> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id | 3406 |

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

1 row in set (0.00 sec)

#主库上Binlog Dump线程用于发送binlog日志文件到从库,如下查询

master@localhost[(none)]> show processlist\G

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

Id: 12

User: repl

Host: 192.168.1.177:57440

db: NULL

Command: Binlog Dump

Time: 511342

State: Master has sent all binlog to slave; waiting for binlog to be updated

Info: NULL

#主库创建数据库及表

master@localhost[(none)]> create database tempdb;

Query OK,1 row affected (0.01 sec)

master@localhost[(none)]> use tempdb

Database changed

master@localhost[tempdb]> create table tb_engines as select * from information_schema.engines;

Query OK,9 rows affected (0.02 sec)

Records: 9 Duplicates: 0 Warnings: 0

#下面是在从库上检查的结果

slave@localhost[(none)]> select count(*) from tempdb.tb_engines;

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

| count(*) |

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

| 9 |

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 解释下什么是CDATA?

[html] 解释下什么是CDATA? CDATA 指的是不由 XML 解析器进行解析的文本数据。XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略。个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很…

kali字典_kali黑客系统wpscan工具扫描wordpress漏洞入侵攻击测试教程

WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并…

局部遮罩 shade(二)

其实它和全局遮罩是一样的思想&#xff0c;只不过就要用position了 <script type"text/javascript">function shade(){var p document.getElementById("shade");p.className "d";p.style.display "block";}function shadeDis…

[html] 移动端如何禁止用户手动缩放页面?

[html] 移动端如何禁止用户手动缩放页面&#xff1f; <meta name"viewport" content"widthdevice-width,initial-scale1,maximum-scale1,minimum-scale1,user-scalableno">个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易…

python怎么填充画布_如何在kivy中用图像填充画布?

矩形设置为MyPaintWidget的大小&#xff0c;在父小部件上以默认大小绘制。如果MyPaintWidget是根小部件&#xff0c;那么设置self.size将允许它占用整个窗口空间。(请注意&#xff0c;当前结构只会在on-touch-down事件上调整画布的大小。因此&#xff0c;如果调整窗口大小&…

[html] HTML5的video怎样预加载(支持全量加载)?

[html] HTML5的video怎样预加载&#xff08;支持全量加载&#xff09;&#xff1f; preload"auto"个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

mysql df_MySQL主从复制实战

什么是主从复制使用两个或两个以上的数据库&#xff0c;一部分数据库当做主数据库&#xff0c;而另一部分数据库当做从数据库。系统在主数据库中进行写操作&#xff0c;从数据库记录在主库上所有的写操作&#xff0c;使得主从数据库的数据保持一致。一旦主数据库出现问题时&…

python logistic回归_logistic回归介绍与源码分析

1. 介绍&#xff08;由线性模型引出logistic回归&#xff09;首先介绍一下什么是线性模型呢&#xff1f;线性模型的定义如下&#xff1a;给定 个属性描述的样本 &#xff0c; 代表样本在第 个属性上的取值。线性模型的目的是学习一个函数&#xff0c;它可以通过属性的线性组合来…

[html] 列举几种多列等高布局的方法

[html] 列举几种多列等高布局的方法 1, 使用table布局 .row { display: table; }.row > * { display: table-cell; }2, 使用flex布局.row { display: flex; flex-wrap: wrap; } .row > * { display: flex; flex-direction: column; }个人简介 我是歌谣&#xff0c;欢迎…

当前标签: Entity Framework

当前标签: Entity Framework在Entity Framework中使用泛型 qouoww 2012-04-29 22:39 阅读:1937 评论:4 一步一步学Entity Framework 4.x (3) qouoww 2012-04-27 17:20 阅读:2569 评论:8 一步一步学Entity Framework 4(2) qouoww 2012-04-27 09:10 阅读:2972 评论:7 一步一步…

case mybatis 不同表_解决mybatis case when 报错的问题

在mybatis中使用case when进行条件筛选判断时遇到Failed to process, please exclude the tableName or statementId.这样的报错信息&#xff0c;报错的信息是语法错误但是我在mysql的命令行中运行sql语句是没问题的//我的case when语句WHERE dept.type 1AND(CASE agent.dept_…

python c cmd_在Python cmd模块中处理CTRL-C

我发现了一些使用Ctrl-C实现所需行为的hacky方法.设置use_rawinput False并替换stdin这个(或多或少……)粘在cmd.Cmd的公共接口上.不幸的是,它禁用了readline支持.您可以将use_rawinput设置为false并传递一个不同的类文件对象来替换Cmd .__ init __()中的stdin.实际上,只在此对…

[html] 列举几种瀑布流布局的方法

[html] 列举几种瀑布流布局的方法 flex方法&#xff1a; .waterfall{ //从上到下 display: flex; flex-direction: row; } .column { //从左到右 display: flex; flex-direction: column; width: calc(100%/3); }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。…

Activity、BroadcastReceiver、Service共同工作的简单例子

? Activity 好像是應用程式的眼睛&#xff0c;提供與User 互動之窗。 ? BroadcastReceiver 好像是耳朵&#xff0c;接收來自各方的Intent。 ? Service 好像是手&#xff0c;提供符合Intent 意圖之服務。 10.2.1 操作情境&#xff1a; 1. 此程式一開始&#xff0c;畫面出現兩…

linuxpython拍照_linux下python抓屏实现方法 -电脑资料

作者&#xff1a;zevolo 字体&#xff1a;[增加 减小] 类型&#xff1a;转载这篇文章主要介绍了linux下python抓屏实现方法,涉及Python操作屏幕截取的相关技巧,需要的朋友可以参考下本文实例讲述了linux下python抓屏实现方法&#xff0c;#!/usr/bin/python‘‘‘by zevolo, 201…

[html] 什么是表单域?它有哪些运用场景?

[html] 什么是表单域&#xff1f;它有哪些运用场景&#xff1f; <form></form>标签中间的部分 当点击这个表单域中的submit按钮&#xff0c;就会把表单中的数据提交到你action的属性指定的网页里面个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放…

线程执行一半断了_有的线程它死了,于是它变成一道面试题

----本文首发于公众号&#xff0c;关注文末公众号阅读体验更佳有些线程它活着&#xff0c;但它躺在池中碌碌无为&#xff1b;有的线程它死了&#xff0c;于是它变成一道面试题。这次的文章&#xff0c;要从一次阿里的面试说起。我记得那天是周一&#xff0c;刚刚经历过周末过的…

C#中的扩展方法,Linq,IO和多线程的定义和实例

前段时间学C#的上转型&#xff0c;泛型&#xff0c;lambda表达式这些应用的理解很费劲。学过之后我多多的练习了几天&#xff0c;接下来继续复习C#的其他一些概念&#xff0c;说实在的这些知识点学过之后很容易忘&#xff0c;但是都是很重要的&#xff0c;所以发表在博客上没事…

准确率 召回率_吴恩达深度学习笔记(61)-训练调参中的准确率和召回率

单一数字评估指标(Single number evaluation metric)无论你是调整超参数&#xff0c;或者是尝试不同的学习算法&#xff0c;或者在搭建机器学习系统时尝试不同手段&#xff0c;你会发现&#xff0c;如果你有一个单实数评估指标&#xff0c;你的进展会快得多&#xff0c;它可以快…

CDU集训代码:基础算法和数据结构2

做题地址&#xff1a; http://acm.hdu.edu.cn/diy/contest_login.php?cid16636 Problem A: HDU1040 排序题&#xff0c;可以直接使用c提供的排序&#xff0c;如果是JAVA&#xff0c;也可以使用自带的排序方法。C语言需要自己写排序算法。 #include<cstdio> #include<…