网站首页 > 技术教程 正文
MySQL 复制配置
环境
IP | Port | |
192.168.31.150 | 3306 | 主库 |
192.168.31.160 | 3306 | 备库 |
192.168.31.170 | 3306 | 备库 |
步骤
- 在每台服务器上创建复制账号
- 配置主库和备库
- 通知备库连接到主库并从主库复制数据
创建复制账号
在每台服务器上执行如下命令:
create user repl@'192.168.31.%' identified by 'replp4ssword';
grant replication slave, replication client on *.* to repl@'192.168.31.%';
配置主库和备库
主库:
在主库上开启二进制日志并指定一个服务器ID,其 my.cnf 文件中配置如下内容:
log_bin=mysql-bin
server_id=150
重新启动 MySQL,然后执行如下 SQL:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 157 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
该命令显示二进制日志文件已经在主库上创建。
备库:
备库的 my.cnf 增加的配置如下:
log_bin=mysql-bin
server_id=160
relay_log=/u01/mysql/data/mysql-relay-bin
log_slave_updates=1
read_only=1
配置选项:
relay_log - 指定中继日志的位置和命名
log_slave_updates - 允许备库将其重放的事件记录到自身的二进制日志
read_only - 会阻止任何没有特权权限的线程修改数据,对于需要在备库上建表的应用程序不建议设置该选项
启动复制
执行如下 SQL 语句:
change master to
master_host='192.168.31.150',
master_user='repl',
master_password='replp4ssword',
master_log_file='mysql-bin.000001',
master_log_pos=0;
然后执行 show slave status SQL 语句来查看状态,我们可以看到 Slave_IO_State、Slave_IO_Running、Slave_SQL_Running 三列显示当前备库复制尚未运行,此时还没有开始复制,运行如下 SQL 命令:
start slave;
再次执行 show slave status SQL 语句来查看状态,可以看出 IO 线程和 SQL 线程都开始运行,Seconds_Behind_Master 的值也不再为 Null。
在主库上查看由备库 IO 线程向主库发起的连接:
show processlist;
在备库上查看其 IO 线程和 SQL 线程:
show processlist;
测试
在主库上执行如下 SQL 语句:
create database testdb;
use testdb;
create table test_table(
test_id varchar(64) primary key,
test_name varchar(32),
test_number int
);
insert into test_table(test_id, test_name, test_number) values ('X1', '张三', 100);
insert into test_table(test_id, test_name, test_number) values ('X2', '李四', 100);
insert into test_table(test_id, test_name, test_number) values ('X3', '赵六', 100);
在备库上执行如下 SQL 语句:
use testdb;
select * from test_table;
可以看到数据已经复制到了备库。
负载均衡
负载均衡采用 Nginx,nginx 在版本1.9.0以后支持tcp的负载均衡,具体可以参照官网关于模块 ngx_stream_core_module的叙述,链接地址为:http://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay。
nginx从1.9.0后引入模块ngx_stream_core_module,模块是没有编译的,需要用到编译,编译时需添加–with-stream配置参数,stream负载均衡官方配置样例如下所示。
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
stream {
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
upstream dns {
server 192.168.0.1:53535;
server dns.example.com:53;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}
server {
listen 127.0.0.1:53 udp;
proxy_responses 1;
proxy_timeout 20s;
proxy_pass dns;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
}
nginx 编译命令:
./configure --prefix=/usr/local/nginx --with-stream --with-pcre=/usr/local/pcre-8.43 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.1.1d --with-http_ssl_module
make
make install
nginx 配置文件内容:
worker_processes auto;
error_log /u01/nginx/error.log;
error_log /u01/nginx/error.log notice;
error_log /u01/nginx/error.log info;
pid /u01/nginx/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream mysql_read {
server 192.168.31.160:3306 weight=1;
server 192.168.31.170:3306 weight=1;
}
upstream mysql_write {
server 192.168.31.150:3306 weight=1;
}
server{
listen 3106;
proxy_pass mysql_read;
}
server{
listen 3206;
proxy_pass mysql_write;
}
}
nginx 启动脚本:
#!/bin/sh
source /etc/profile
/usr/local/nginx/sbin/nginx -c /u01/nginx/nginx_mysql.conf
猜你喜欢
- 2024-10-12 「干货」总结最新的官方稳定版nginx\mongo\mysql快速安装部署
- 2024-10-12 使用 Nginx 作为 MySQL 的 TCP 负载均衡器
- 2024-09-25 利用linux 负载均衡nginx stream模块反向代理mysql数据库
- 2024-09-25 快速搭建NGINX-HTTPD-PHP-MySQL环境
- 2024-09-25 云计算--Docker典型命令Docker run部署nginx\mysql\redis
- 2024-09-25 MySQL与Redis数据库连接池介绍(图示+源码+代码演示)
- 2024-09-25 tornado + django + nginx + mysql搭建网站源码分享
- 2024-09-25 Centos 6.X Nginx Mysql PHP(即LNMP) 安装与部署(非源码编译)
- 2024-09-25 从零开始学网站开发——2.搭建Linux+Nginx+MySQL+PHP环境
- 2024-09-25 跟着腾讯T4学架构:微服务+MySQL+Nginx+Redis+容器化+虚拟机
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)