mysql主从配置

ProxySQL的服务发现机制

 ̄綄美尐妖づ 提交于 2019-12-06 03:43:43
ProxySQL内部有一个Monitor模块,通过一个monitor账户对后端数据库进行监控,监控的内容主要包括:数据库可用性,是否read_only以及slave延迟。 配置监控账户 首先要在ProxySQL中配置监控账户。它是通过global variables来配置的。 12345678910111213141516171819202122232425262728 mysql> select * from global_variables where variable_name like '%monitor%';+-----------------------------------------------------+----------------+| variable_name | variable_value |+-----------------------------------------------------+----------------+| mysql-monitor_enabled | true || mysql-monitor_connect_timeout | 600 || mysql-monitor_ping_max_failures | 3 || mysql-monitor_ping_timeout | 1000 || mysql

pg总览

时间秒杀一切 提交于 2019-12-06 03:37:05
一、编译安装初始化等 ./configure --prefix=/release --with-openssl --without-ldap --with-libxml - -enable-thread-safety make -j4 make install initdb -D /home/postgres/postgres_5432/data -U postgres -W --wal-segsize=16 -E UTF8 # 注意事项: # 1、-D 类似于mysql的datadir,data目录必须是空目录(否则初始化失败),且权限必须是0700(否则无法重启) # 2、--wal-segsize=16 选项:默认的就是16M大小的wal日志,PostgreSQL11版本的一个重要调整是支持initdb和 pg_resetwal修改WAL文件大小,而11版本之前只能在编译安装PostgreSQL时设置WAL文件大小。这一特性能够方便WAL文件的管理。WAL日志文件大小默认为16MB,该值必须是1到1024之间的2的次方,增大WAL文件大小能够减少WAL日志文件的产生。类似于mysql的redolog pg_resetwal --wal-segsize=64 -D /home/postgres/postgres_5432/data PostgreSQL的默认用户名和数据库也是

Mysql实现数据库主从复制架构

倾然丶 夕夏残阳落幕 提交于 2019-12-06 03:27:59
MySQL复制 (1)扩展方式: Scale Up ,Scale Out (2)MySQL的扩展 读写分离 复制:每个节点都有相同的数据集 向外扩展 二进制日志 单向 (3)复制的功用: 数据分布 负载均衡读 备份 高可用和故障切换 MySQL升级测试 一主多从   主从复制原理 (1)从库生成两个线程,一个I/O线程,一个SQL线程; (2)i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; (3)SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致; 主从复制线程: 主节点: dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events 从节点: I/O Thread:向Master请求二进制日志事件,并保存于中继日志中 SQL Thread:从中继日志中读取日志事件,在本地完成重放 跟复制功能相关的文件: master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等 relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地replay

mysql远程单向实时同步数据库

烂漫一生 提交于 2019-12-06 02:40:05
因为我要同步的数据是实时数据,每日更新,所以选择用这个方式 确保要连接的两台服务器上安装的mysql版本差不多 这里我使用了navicat工具 1.分别给两个数据库创建一个用户名密码都一致的账户,主机填所在服务器的ip 2.在作为主库(master)的服务器上打开命令行,进入mysql。赋予所有权给从服务器。 grant replication slave on *.* to '用户名l'@'从库ip' identified by '密码'; 然后刷新 flush privileges; 3.修改主库所在服务器的配置文件my.ini、xxx.ini 等等 ① 修改server-id项的值,只要不是1都可以,确保值唯一 ② 配置文件中没有就添加下列项 日志文件以mysql-bin开头 4.配置好之后,重启mysql 5.查看master的状态 show master status; 第一次出错,是因为有一个配置文件的值没有修改,和其他配置文件起了冲突。 File和position两个值在配置slave时会用到 6.修改从库(slave)所在服务器的mysql配置文件 ①server-id = (除1之外的任意值) ②replicate-do-db = (从库被同步的数据库) 7.配置好之后,重启mysql 8.在slave服务器上打开命令行编辑器,或者直接用navicat打开命令行。

Mysql之配置双主热备+keeepalived.md

﹥>﹥吖頭↗ 提交于 2019-12-05 22:25:01
准备 1 1. 双主 master1 192.168.199.49 2 master2 192.168.199.50 3 VIP 192.168.199.52 //虚拟IP 4 2.环境 master:nginx + php + mysql + keepalived 5 VIP:只要和master在一个局域网内即可。 6 3. 服务器之间网络通畅,可以互相ping通。 7 4. 2个服务器的mysql版本要一致。数据库密码一致 8 5. 防火墙增加允许组播和允许VRRP(虚拟路由器冗余协)通信,这样主服务器在故障恢复后才能抢回资源 9 -A INPUT -s 182.148.15.0/24 -d 224.0.0.18 -j ACCEPT 10 -A INPUT -s 182.148.15.0/24 -p vrrp -j ACCEPT 11 重启生效:service iptables reload 配置服务器 1 服务器1: 2 3 在my.cnf文件的[mysqld]配置区域添加下面内容: 4 log-bin=mysql-bin #记录二进制文件 5 binlog_format=mixed #mysql默认采用的二进制格式 6 server-id = 2 #服务号,必须是唯一的,一般取IP的后8位 7 expire_logs_days = 10 #binlog过期清理时间 8 9

MySQL技术体系之核心参数

一个人想着一个人 提交于 2019-12-05 22:19:39
本文主要基于MySQL 5.7版本的数据库环境,总结my.cnf文件中核心参数的配置使用,让更多的人对MySQL技术体系有更全面、更专业的深度了解。 一、客户端核心参数 1、port 端口号,默认3306 2、socket Socket文件地址,默认以.sock为文件名称后缀,用于UNIX套接字通信。 二、服务端全局区(SGA)缓冲区参数 1、innodb_buffer_pool InnoDB缓冲池,位于主内存 缓存被访问过的表数据、索引文件、插入缓冲、数据字典等 推荐大小设置为物理内存的50%-80% 2、innodb_buffer_pool_instance 将缓冲池进一步划分为互相隔离的内存区域,更好的支持并发读写,减少内存争用现象 默认值为1 仅当innodb_buffer_pool参数配置大于1024MB有效 通过命令show engine innodb status查看每个内存区域的内存使用情况 3、innodb_old_blocks_time和innodb_old_blocks_pct InnoDB缓冲池innodb_buffer_pool,内部由LRU链表管理 LRU链表进一步分为old pages list和young pages list: old pages list:存放长时间未被访问的数据页 young pages list:存放最新、最近被访问的数据页

docker下MySQL的主从复制

柔情痞子 提交于 2019-12-05 22:16:46
MySql的主从复制 sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7) sudo docker run -p 3339:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 主数据库 sudo docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 从数据库 执行完 俩个命令 创建的容器默认启动 docker ps 查看当前正在运行的 容器 docker exec -it master bash 进入master容器 cd etc/mysql 切换到 MySQL所在的路径 vi my.cnf 对my.cnf 进行编辑 可能会报错 原因是 没有 容器本身没有安装 vim 安装 vim apt-get update apt-get install vim 安装成功后 vim my.cnf 对文件进行编辑 [mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能 log-bin=mysql-bin 配置完成后需要重新启动容器 service mysql restart 重启mysql服务时会使得docker容器停止

MySQL——mmm高可用(实践!)

末鹿安然 提交于 2019-12-05 21:28:53
MySQL-MMM优缺点: 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。 缺点:Monitor节点是单点,可以结合Keepalived实现高可用。 MySQL-MMM工作原理:  MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。 mmm_mond: 监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。 mmm_agentd: 运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。 mmm_control: 一个简单的脚本,提供管理mmm_mond进程的命令。  mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。  在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护

MySQL 学习笔记 (一)

给你一囗甜甜゛ 提交于 2019-12-05 20:39:18
1.InnoDB and Online DDL ALTER TABLE tbl_name ADD PRIMARY KEY ( column ) , ALGORITHM =INPLACE , LOCK = NONE ; https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl.html 2.T RUNCATE TABLE后可用空间的使用 在innodb_file_per_table=on的条件下,可用空间释放给了操作系统。而在innodb_file_per_table=OFF(system tablespace)或( general tablespaces)情况下,空间可以从新利用,没有物理释放。 https://dev.mysql.com/doc/refman/8.0/en/innodb-truncate-table-reclaim-space.html 3.复制状态查看 * 从库查看slave_master_info表:select * from mysql.slave_master_info; * 从库查看slave_relay_log_info表:select * from mysql.slave_relay_log_info; * 从库查看slave_worker_info表:select * from mysql

mysql主从复制

梦想的初衷 提交于 2019-12-05 18:07:54
mysql一主一从 主从复制工作过程 mysql主从复制依赖于二进制日志;用户发送请求更新数据,数据库更新后生成二进制日志,主节点把新生成的二进制日志通过dump线程通过网络发送给从节点;从节点的io thread负责接收二进制日志,把二进制日志的内容放到中继日志中(relay log);从节点通过sql thread线程执行中继日志中的sql语句,实现更新本机的数据库数据 主从复制原理图如下: 主节点配置: [root@centos7 ~]# vim /etc/my.cnf [mysqld] innodb-file-per-table #指定存储引擎 server-id=7 #设置区分主从的id;mysql配置文件不区分"_"和"-" log-bin #主节点必须启用二进制日志,主从复制基于二进制日志 [root@centos7 ~]# systemctl retart mariadb [root@centos7 ~]# mysql MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.38.%' identified by 'centos'; #创建并授权一个账号,用于从节点连接主节点复制数据用,授权权限为从节点复制 从节点配置 [root@localhost ~]$ vim /etc/my