mysql主从配置

mysql5.7主从配置--docker创建mysql

时光总嘲笑我的痴心妄想 提交于 2019-12-04 10:12:12
想搭建个mysql主从复制的环境,但是资源有限,不想创建多个虚拟机,就用docker来吧。 centos7下安装docker的方法,博文“ docker学习2--centos7下安装 ”。 docker pull 从官方下载mysql镜像,速度非常慢,所以就从daocloud下载镜像吧,速度很快。 docker pull daocloud.io/library/mysql:5.7 运行起来,端口分别对应3306,3307 3306为主,3307为从 进入3306,并查看容器的系统版本 发现用的是debian版本的linux,查找下my.cnf在哪 查看my.cnf,发现里面又指向/etc/mysql/mysql.conf.d/mysql.cnf # cat /etc/mysql/mysql.conf.d/mysqld.cnf 看到 [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 #

MySQL主从同步原理

筅森魡賤 提交于 2019-12-04 04:40:24
MySQL主从的作用:MySQL主从(MySQL replication),主要用于MySQL的实时备份或者读写分离。 MySQL主从的原理,总结一下: (1)每个主从仅可以设置一个主。 (2)主在执行SQL之后,记录二进制log文件(bin-log) (3)从连接主,并获取主的bin-log,存于本地relay-log,并从上次执行的位置起执行SQL,一旦遇到错误则停止同步。 mysql主从配置replication,又叫A,B复制,保证主从数据同步 A --> change data --> bin_log -transfer --> B --> repl_log -->change data 从这几条replication原理来看,可以有这些推论: (1)主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。 (2)如果主从的网络断开,从会在网络正常后,批量同步。 (3)如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这是个很危险的操作。所以一般情况下,非常小心的修改从上的数据。 (4)一个衍生的配置是双主,即互为主从配置,只要双方的修改不冲突,可以工作良好。 (5)如果需要多主的话,可以用环形配置,这样任何一个节点的修改都可以同步到所有节点。 (6)可以应用在读写分离的场景,用以降低单台MySQL的I/O (7

MYSQL的主从复制

不问归期 提交于 2019-12-04 03:46:49
当单台 MYSQL 服务器无法满足当前网站流量时的优化方案。需要搭建 mysql 集群技术。 一、功能: 当向主服务器插入 | 修改 | 删除数据时,数据会自动同步到从服务器。 注意:主从复制是单向的,只能主 -> 从 分为两种类型:发射型(一主多从):一般使用在:备份、读写分离。 环形(多主多从):一般使用:当主服务器压力大时、跨地区的网站实现数据同步 在环形结构中,如果同时向三台服务器的同一表插入记录会出现 “ ID 冲突的问题”。 解决办法:让三台服务器生成不同的 ID ; 第一台: 1,4,7... 第二台: 2,5,8.. 第三台: 3,6,9... 这个可以 MYSQL 的配置文件中设置: 二、主从的 原理(利用了 bin 日志) Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下 所有修改了数据库 的 SQL 语句( insert,update,delete,ALTER TABLE,grant 等等)。主从复制的原理其实就是把主服务器上的BIN日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。 扩展: mysql 中的日志: 查询日志 错误日志 Bin 日志 慢日志:你可以设置一个时间阀值,如 0.5 秒,那么将来所以执行时间超过这个值的 SQL 语句就会被 记录下来。这样我们就可以把慢的 SQL 语句记录下来

MySQL 主从复制原理及过程讲解

倖福魔咒の 提交于 2019-12-04 03:42:41
mysql主从原理描述,摘自老男孩。 下面简 单描述下 MySQL Replication 复制的原理及过程 。 1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复制开始进行 。 2)此时, Slave服务器的 I/O线程会通过在 Master上已经授权的复制用户权限请求 2.此时, Slave服务器的 I/O线程会通过在 Master上已经授权的复制用户权限请求连接 Master 服务器 ,并请求从指定 binlog 日志文件的指定位 置(日志文件名 和位置就是 在配置主从复制服务时执行 change master 命令指定的)之后开始发送 binlog 日志内容 。 3.Master服务器接收到来自 Slave服务器的 I/O线程的请求之后,其上负责复制的 binlog dump 线程会根据 Slave 服务器的 I/O 线程请求的信息,分批读取指定 binlog 日 志文件所指定位置之后的 binlog 日志信息,然后返回给 Slave 端的 I/O 线程 。 返回的信 息中除了 binlog 日 志内容之外,还包括在 Master 服务器端记录的新的 binlog 文件名称, 以及在新的 binlog 中的下一个指定的更新位置 。 4.当 Slave服务器的 I/O线程获取到 Master服务器上 I/O线程发送的日志内容及

[PHP] 新版本PHP7.4与新版本MySQL8认证问题

a 夏天 提交于 2019-12-04 01:34:52
mysql8的默认密码加密方式是caching_sha2_password,PHP7.4连接mysql的加密方式也为caching_sha2_password,这个地方要注意。 当为了兼容旧版的客户端不只是PHP,还有在主从复制的时候也会有问题,mysql8的认证方式改回了mysql_native_password。如果使用PHP7.4的情况下,这里就会认证报错,因为7.4是caching_sha2_password加密方式,因此这里我可以改用成PHP7.2 不改配置的情况下,可以使用下面的方式更改mysql8的加密方式,为root用户更改密码: USE mysql; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES; 新增安装php7.2 apt-get install php7.2-fpm php7.2-mysql 等扩展 把监听端口改成别的,nginx反向代理这个端口 来源: https://www.cnblogs.com/taoshihan/p/11827111.html

mysql 5.6 新特性之GTID复制

偶尔善良 提交于 2019-12-04 01:25:36
Mysql 5.6 开始支持 gtid 模式的主从复制 Gtid 即为全局事务标识符,是指 mysql 对写入二进制日志的每个事务所作的标记。由 server_uuid 和事务 id 组成。 Gtid 的作用是什么?可以简化搭建主从实例。我们以往在扩展从库时,均需要在从库上指定开始复制的二进制日志文件名、位置,如果指定错误,可能还会引起数据一致性的问题。 使用 gtid 模式之后,只需要在从库上指定主库的基本连接信息(登录信息、 ip, 端口等),将自动查寻复制起始点。这将大大简化扩展从库实例。 gtid 是由 server_uuid 和事务 id 组成。 Server_uuid 是一个 128 位的数字,形如 b45c01f0-6787-11e3-a5f6-0800271b7f69 它是由服务器首次启动时自动随机生成,并写入到数据目录的 auto.cnf 目录中。服务器一旦正式投入运行,就绝不要修改 server_uuid 或修改删除 auto.cnf 文件!否则会引起后续的主从复制故障! 从这个原理来看,使用 gtid 并不会影响主从复制性能。 混合 gtid 模式与非 gtid ,还能否正常使用?完全可以,但不建议这样做。保持单一与统一,可减少不必要的麻烦。 如果在使用过程中,有疑问可致邮 zhangxugg@163.com, 共同探讨 如何启用 gtid 复制? 1.

mysql 主从复制刷新参数

依然范特西╮ 提交于 2019-12-04 01:11:10
mysql 复制的sync参数: master_info_repository = TABLE relay_log_info_repository = TABLE sync_master_info =1000 sync_relay_log =1000 sync_relay_log_info =1000 MySQL主从复制想必大家都会配置,但是每一层都完全理解可能不一定多。在mysql 从库保存有两个信息,分别:master_info_repository=( TABLE or File ) relay_log_info_repository = (TABLE or FILE) 在最开始的主从复制的时候,这两个参数分别是等于 FILE, maiter.info 文件保存: master_host,Master_log_name,master_log_pos, relay.info 文件保存着: Relay_log_name,relay_log_pos,Master_log_name,Master_log_pos 在5.6开始,master.info 和relay.info 支持存放到数据表中 对应 slave_master_info,slave_relay_log_info sync_master_info 参数 是控制 slave_master_info 表的更新频

第三章·MySQL版本区别及管理

久未见 提交于 2019-12-03 20:54:03
一.MySQL5.6与MySQL5.7安装的区别 1、cmake的时候加入了bostorg 2、初始化时 使用mysqld --initialize 替代mysql_install_db,其它参数没有变化:--user= --basedir= --datadir= 3、--initialize会生成一个临时密码 4、还可以用另外一个参数--initialize-insecure [root@db02 mysql-5.7.20]# yum install -y gcc gcc-c++ automake autoconf [root@db02 mysql-5.7.20]# yum install make cmake bison-devel ncurses-devel libaio-devel [root@db02 mysql-5.7.20]# wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz #登录boost.org下载也可以 [root@db02 mysql-5.7.20]# tar xf boost_1_59_0.tar.gz -C /usr/local/ [root@db02 mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=

MySQL5.6主从复制(读写分离)

半城伤御伤魂 提交于 2019-12-03 20:46:35
一、前言:为什么MySQL要做主从复制(读写分离)? 通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。 二、MySQL主从复制(读写分离)和集群的区别: 我对MySQL也是刚开始研究,不是很专业。我的理解是: 1、主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作)。 局限性: (1)配置好主从复制之后,同一张表,只能对一个服务器写操作。如果在从上执行了写操作,而之后主也操作了这张表,或导致主从不同步;据说可以配置成主主方式,但我还没有研究到。 (2)主数据库服务器宕机,需要手动将业务系统切换到从数据库服务器。无法做到高可用性(除非再通过部署keepalive做成高可用方案)。 2、集群是由N台数据库服务器组成,数据的写入和查询是随机到任意一台数据库服务器的,其他数据库服务器会自动同步数据库的操作。 任何一台数据库宕机,不会对整个集群造成大的影响。 局限性:我经过测试才知道目前mysql集群版本(MySQL Cluster)只能对NDB存储引擎的数据进行集群同步,如果是INNODB或其他的MySQL存储引擎是不行的

MySQL 5.6 在CentOS 6.2 源码安装

吃可爱长大的小学妹 提交于 2019-12-03 19:55:25
MySQL的常见的安装方式,一般是通过RPM包的形式安装,还有就是通过安装Linux时,一并把MySQL安装好,今天和大家介绍一下,如果用源代码的方式,在非 root用户安装MySQL。具体安装环境如下: 操作系统:CentOS 6.2 MySQL版本:MySQL 5.6 安装前的规划工作: mysql安装在指定的用户下,本文是mysql用户。 数据库的安装目录: /mysql/server 下面开始我们MYSQL安装过程 。 一、安装前的准备工作 在安装MySQL前,先要检查MySQL依赖是否存在。 1、检查GCC是否已经安装。检查方法: rpm –qa gcc 如果没有安装,则需要安装GCC, centos 安装GCC方式: yum install gcc 2、检查cmake 是否安装。检查方法:rpm –qa cmake 如果未安装,先安装cmake , yum install cmake 注: 如果当前没有centos 安装盘,或者Linux不能上网,只能上网下载cmake的rpm 包,gcc也是如此。 3、其它依赖包的安装,除了gcc,cmake 以外,mysql 还会依赖以下包: bison gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel 可以用yum install 包名