windos教你从零开始搭建mysql主从复制多实例高可用集群

windos搭建mysql主从复制多实例集群

因为没有更多的机器来搭建多机器的集群环境,所以这里使用单机多实例监听多端口来实现mysql的集群环境。

为什么要使用mysql主从环境

一般来说读流量大于写流量,所以当流量过大时可以通过mysql主从来扩展从库,读取从库从而应对读流量的冲击。主从复制的实现原理和优缺点有兴趣的可以看我这个文章mysql主从读写分离

搭建主从环境

这里假设你已经下载安装好mysql了。已经可以启动一个mysql 3306的实例了。

现在我们复制一个配置文件。我原来的配置文件是my.ini,我直接复制粘贴改个名字,为了省事命名成3307my.ini

cp my.ini 3307my.ini

接下来我们有了两个配置文件,一个my.ini,一个3307my.ini

我们修改3307my.ini的配置文件内容。

[mysqld]
port=3307  # 新实例的端口
basedir=D:/MySQL5.7.26/3307  # 新实例的文件夹 我直接放在了原来mysql文件夹下面
datadir=D:/MySQL5.7.26/3307/data/ # 新实例的数据存放路径
character-set-server=utf8
default-storage-engine=InnoDB
max_connections=100
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
log_error_verbosity=1
max_allowed_packet=16M
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
server_id=2  # server_id需要修改成和原来不一样的
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120

log-bin=D:/MySQL5.7.26/3307/mysql-bin  # 开启binlog binlog用于主从同步

server-id=123455 # server-id同上

log-error=D:/MySQL5.7.26/3307_err.log              #错误日志

修改完成接下来使用这个配置文件启动,你会发现启动失败,哈哈哈哈。

因为新的数据库没有mysql的基本信息那些库和表还有插件,所以我们需要复制过去,我是采用了这种简单粗暴的方法,网上还有使用mysql_install_db的,不过我发现我的mysql没有这玩意。

我们复制datashare两个文件夹复制到3307文件夹里面。

在这里插入图片描述

下面是./3307/文件夹下面的内容,复制过来以后这两个文件夹就过来了。

在这里插入图片描述
接下来你可以启动第二个mysql实例了。回到3307目录的上层目录,也就是你的mysql根目录。然后运行下面的命令。使用刚才的3307my.ini启动新实例。

./bin/mysqld.exe --defaults-file=./3307my.ini

启动成功后可以进行连接了。连接上去以后可以看到现在和3306库一样了。接下来开始配置主从复制

我们先进入3306主库客户端,查看一些数据。执行下面的命令。

show master status;

可以看到下面的内容。下面的file参数和position参数要在从库配置中用到。

在这里插入图片描述

接下里进入3307客户端执行下面的命令。

change master to 
master_host='127.0.0.1',  --master地址
master_port=3306,         --master端口
master_user='root',       --master登录用户名
master_password='pa88word', --master登录密码
master_log_file='mysql-bin.000009',  --要开始同步的binlog文件 上面的file参数
master_log_pos=154;                  --要开始同步的具体指针位置 上面的position参数

执行完这个命令,从库就知道主库在哪了,就知道谁是主库了,也知道该从哪里开始同步了。

你以为接下来就完了?不不不,接下来还需要启动从库才行。

start slave;

这个命令是什么呢,主要是启动从库的更新线程,从库有两个更新线程,一个io线程负责把主库的binlog写入从库的relay log。一个sql线程负责把relay log中的信息写入从库。

接下里看看从库的状态,执行下面的命令。

show slave status;

在这里插入图片描述

这里面主要看Slave_IO_RunningSlave_SQL_Running也就是上面说的两个线程是否在运行,如果是Yes,那么就ok了。

如果不是Yes可以退出重启一下mysql服务试试。

如果已经可以了,那么可以在3306主库里面修改一些数据进行测试了。如果有问题你没搭建成功,欢迎你来找我。下一篇文章教你搭建 mysql 2主多从集群。

原创文章 84 获赞 7 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Thepatterraining/article/details/106039524