mysql 主从优点_MySql主从配置实践及其优势浅谈

1、增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1

修改my.ini(linux下应该是my.cnf):

[client]

port = 3307

[mysqld]

port = 3307

basedir=D:/Mysql2/Mysql5.1/mysql

datadir=D:/Mysql2/Mysql5.1/mysql/data/

之后,再增加MySQL2服务,

mysqld –install MySQL2  --defaults-file=D:\Mysql2\Mysql5.1\mysql\my.ini(需要管理员权限,否则会被无情拒绝)

另一个MySQL将端口号设置为3308服务名为MySQL1(打算用做从数据库)

2、新建了一个test数据库,新建一张twenty_million表(id,name,value)往里面插入2000W条数据(5min)

3、主从数据库同步配置, 如果不是同一个台服务器上的需要设置权限用户给它。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.13 sec)

因为我的是一台机器上进行测试,所以直接用root用户了,密码123

修改主数据库的配置文件,my.ini,开启BINLOG,并设置server-id的值,修改之后必须重启Mysql2服务:

[mysqld]

log-bin=D:/Mysql2/Mysql5.1/mysql/log/mysql-bin.log

server-id=1

之后可以得到主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

接下来停止主数据的更新操作,并生成数据库的备份,可以通过mysqldump到从数据库,当然也可以直接用cp命令将数据文件复制到从数据库中去(1%拷了384秒,情何以堪?我还不如重新插一遍测试数据呢,果断掐了)

也算学个命令,其实完全可以用navicate里的导出数据库再导入数据库

进行从数据库的配置:

修改my,ini(my.cnf)

[mysqld]

server-id=2

log_bin = /var/log/mysql/mysql-bin.log

master-host =192.168.1.100(本机的话:127.0.0.1//localhost是它的别名!)

master-user=test

master-pass=123456

master-port =3306

master-connect-retry=60

replicate-do-db =test

但是,我一直都无法启动,晚上搞了很久也没搞出个所以然来,最后只能添加错误日志

log-error=D:/Mysql1/Mysql5.1/mysql/log/mysql-bin.log

net start mysql1

日志截图

继续度娘的干活:

然后我就想知道自己的mysql版本,进入cmd:

我次奥,我一直以为我的mysql是5.1啊.知道了问题原因,解决也比较容易

在从数据库的my.ini中只需要添加两项:

server-id = 2

replicate-do-db = mydatabase

之后再在cmd下:

mysql> change master to master_host='127.0.0.1',master_user='root',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=60, master_port=3307;

其中master_log_file和master_log_pos通过在主数据库show master status;得到。

端口不是默认端口的话,如master_port=3307,不要加引号。

接下来就是重启服务,先启动主数据库服务(我的是mysql2),再启动从数据库服务,然后就算完成了主从配置,在主数据库中更改test数据库中数据,理论上,在从数据库中也会做相应的更改

当然这是理论上的,实际上,我特么又出问题了,从数据库中的数据并没有按照理论上做出相应的更改,我仔细看了下show slave stats\G和别人成功的截图对比下,其中slave_IO_Running这项,我的是NO人家的是YES,目测是这个问题,查看log日志

在主数据库中

再更改从数据库(建议开两个CMD,我之前一直都是一个CMD,exit cd麻烦死)

搞定,测试,成功!

4、最后总要说说它的实际作用的么,在我百度之前,我在想,这不就是数据库的实时备份么,也没什么大不了的,这样的想法,只能说明自己对数据库读写压力完全不了解。

在MySQL数据库中,支持单项、异步复制。在复制过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。如下图所示。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。当一台从服务器连接到主服务器时,从服务器会通知主服器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从那个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新。

好处一:实现服务器负载均衡

即可以通过在主服务器和从服务器之间切分处理客户查询的负荷,从而得到更好的客户相应时间。通常情况下,数据库管理员会有两种思路。

一是在主服务器上只实现数据的更新操作。包括数据记录的更新、删除、新建等等作业。而不关心数据的查询作业。数据库管理员将数据的查询请求全部 转发到从服务器中。这在某些应用中会比较有用。如某些应用,像基金净值预测的网站。其数据的更新都是有管理员更新的,即更新的用户比较少。而查询的用户数 量会非常的多。此时就可以设置一台主服务器,专门用来数据的更新。同时设置多台从服务器,用来负责用户信息的查询

二是在主服务器上与从服务器切分查询的作业。在这种思路下,主服务器不单单要完成数据的更新、删除、插入等作业,同时也需要负担一部分查询作业。而从服务器的话,只负责数据的查询。当主服务器比较忙时,部分查询请求会自动发送到从服务器重,以降低主服务器的工作负荷。

好处二:通过复制实现数据的异地备份

如上图所示,可以定期的将数据从主服务器上复制到从服务器上,这无疑是先了数据的异地备份。在传统的备份体制下,是将数据备份在本地。此时备份 作业与数据库服务器运行在同一台设备上,当备份作业运行时就会影响到服务器的正常运行。有时候会明显的降低服务器的性能。同时,将备份数据存放在本地,也 不是很安全。如硬盘因为电压等原因被损坏或者服务器被失窃,此时由于备份文件仍然存放在硬盘上,数据库管理员无法使用备份文件来恢复数据。这显然会给企业 带来比较大的损失。

好处三:提高数据库系统的可用性

数据库复制功能实现了主服务器与从服务器之间数据的同步,增加了数据库系统的可用性。当主服务器出现问题时,数据库管理员可以马上让从服务器作为主服务器,用来数据的更新与查询服务。然后回过头来再仔细的检查主服务器的问题。此时一般数据库管理员也会采用两种手段。

一是主服务器故障之后,虽然从服务器取代了主服务器的位置,但是对于主服务器可以采取的操作仍然做了一些限制。如仍然只能够进行数据的查询,而 不能够进行数据的更新、删除等操作。这主要是从数据的安全性考虑。如现在一些银行系统的升级,在升级的过程中,只能够查询余额而不能够取钱。这是同样的道 理。

二是从服务器真正变成了主服务器。当从服务器切换为主服务器之后,其地位完全与原先的主服务器相同。此时可以实现对数据的查询、更新、删除等操 作。为此就需要做好数据的安全性工作。即数据的安全策略,要与原先的主服务器完全相同。否则的话,就可能会留下一定的安全隐患

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

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

相关文章

python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率

文章目录需求实现先导入本次需要用到的包一些辅助函数如下函数是得到指定后缀的文件如下的函数一个是读图像,一个是把RGB转成BGR下面是主要的几个处理函数在上面几个函数构建对应的处理函数main函数按顺序执行结果需求 本次的需求是边读图像,边处理图像…

Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type

Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为“内容(Content)”,为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行“分类”。分类所涉及到的层面又必然包括: 1、分类的标准或特征描述{即&#xf…

arduino byte转string_Java数组转List集合的三驾马车

点击上方 蓝字关注我们来源:blog.csdn.net/x541211190/article/details/79597236前言本文中的代码命名有的可能不太规范,是因为没法排版的问题,小仙已经很努力去解决了,希望各位能多多点赞、分享。好了,不多bb了(不要让…

ES6笔记(4)-- Symbol类型

系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志、记号,顾名思义,它可以用了做记号。 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值。 由此,JS的数据类型多了…

mysql类型说明_MYSQL 数据类型说明

MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更…

LeetCode OJ - Convert Sorted List to Binary Search Tree

题目: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 解题思路: 注意是让构造平衡二叉搜索树。 每次将链表从中间断开,分成左右两部分。左边部分用来构造左子树&#xff…

手把手教你如下在Linux下如何写一个C语言代码,编译并运行

文章目录手把手教你如下在Linux下如何写一个C语言代码,编译并运行打开Ubuntu终端创建 helloworld.c编译C文件手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 我这里的终端是Windows下的WSL,如果有疑问,…

邮件群发工具的编写(二)数据的保存

数据的保存与读取 人类是在不断探索与改进中进步的 上一篇,邮件群发工具的编写(一)邮件地址提取,我们讲到了邮箱的提取。 那么这一篇,讲一下提取完的邮箱信息的保存和读取。 首先,我希望对上一篇邮箱提取类…

mysql 文件描述符_MySQL没有发布临时文件描述符

几天前,我们遇到了MySQL安装的一些严重问题:MySQL不断打开临时文件(正常行为)但这些文件从未发布过.结果是,最终磁盘空间耗尽,我们必须重新启动服务并手动清理/ tmp.使用lsof,我们看到这样的事情:mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (de…

c++ lambda函数_C++11 之 lambda函数的详细使用

1. lambda 函数概述lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。通常情况下,lambda函数的语法定义为:[capture] (parameters) mutable ->return-type {statement}其中:[c…

zabbix监控 openstack 的实例的资源使用情况

领导提出的需求:在不给云主机安装客户端的情况下,监控云主机的 cpui 内存 网络 io,并且能出图。想了几个方案:1、ceilometer取数据,存入mangodb,用zabbix来读mangodb数据绘图2 ceilometer 取数据 &#xff…

pytorch 正向与反向传播的过程 获取模型的梯度(gradient),并绘制梯度的直方图

记录一下怎样pytorch框架下怎样获得模型的梯度 文章目录引入所需要的库一个简单的函数模型梯度获取先定义一个model如下定义两个获取梯度的函数定义一些过程与调用上述函数的方法可视化一下梯度的histogram引入所需要的库 import os import torch import torch.nn as nn impor…

2012-9

响应式设计的典范 http://www.bostonglobe.com/ 网站测试页面 http://www.webpagetest.org/ 编程算法 http://blog.sina.com.cn/s/articlelist_1647038822_1_1.html C Programmers Cookbook http://www.cppblog.com/mzty/category/7609.html Blade 是一个现代构建系统&#xff…

PV操作 (转载)

PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。 信号量(semaphore)的数据结构为一个值和一个…

ubuntu升级python_Ubuntu 升级python3为更高版本【已实测】

2020-04-13 更新安装步骤: 1. 先update一下 sudo apt update 2. 安装依赖库 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

mysql5.0 java连接_Java连接mysql5.0

网上的资料真烂,千篇一律的拷贝的,根本不能用,鄙视! 正题: 到MYSQL网站下载mysql-connector-java-5.0.4.zip文件,解压; 解压后有一个文件:mysql-connector-java-5.0.4-bin.jar 把这个…

Framework打包

2019独角兽企业重金招聘Python工程师标准>>> iOS app需要在许多不同的CPU架构下运行: arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64为模拟器上使用…

windows 10 下利用WSL的Linux环境实现vscode C/C++环境的配置

本文主要结合二个工具,介绍如何在windows搭建Linux开发环境: WSL(Windows Subsystem for Linux)VSCode(Visual Studio Code) 文章目录WSL安装VSCode安装配置Linux下的C/C环境1. 打开WSL的控制台2. 更新ubuntu软件3. 安装GCC和GDB4. 配置VSCode(1). 打开…

java类初始化顺序

转自:http://zangweiren.iteye.com/blog/208122 对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下…

Java 8 - Interface Default Method接口默认方法

Java 8 相比于Java 7 推出了几大特色(features)(接口默认方法)default methods in interface, (接口静态方法)static method in interface, 函数编程(functional programming), lamda expression, stream API.这里首先…