分布式架构-mycat基础结构搭建

1.准备环境
1.1 环境准备:

两台虚拟机 db01 db02
每台创建四个mysql实例:3307 3308 3309 3310

1.2 删除历史环境:

pkill mysqld
rm -rf /data/330* 
mv /etc/my.cnf /etc/my.cnf.bak

1.3 创建相关目录初始化数据

mkdir /data/33{07..10}/data -p
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/data/app/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/data/app/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/data/app/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3310/data --basedir=/data/app/mysql

1.4 准备配置文件和启动脚本

db01

cat >/data/3307/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3307/data
	socket=/data/3307/mysql.sock
	port=3307
	log-error=/data/3307/mysql.log
	log_bin=/data/3307/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=7
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF

cat >/data/3308/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3308/data
	port=3308
	socket=/data/3308/mysql.sock
	log-error=/data/3308/mysql.log
	log_bin=/data/3308/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=8
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF

cat >/data/3309/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3309/data
	socket=/data/3309/mysql.sock
	port=3309
	log-error=/data/3309/mysql.log
	log_bin=/data/3309/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=9
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF
cat >/data/3310/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3310/data
	socket=/data/3310/mysql.sock
	port=3310
	log-error=/data/3310/mysql.log
	log_bin=/data/3310/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=10
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF

cat >/etc/systemd/system/mysqld3307.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
	LimitNOFILE = 5000
	EOF

cat >/etc/systemd/system/mysqld3308.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
	LimitNOFILE = 5000
	EOF

cat >/etc/systemd/system/mysqld3309.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
	LimitNOFILE = 5000
	EOF
cat >/etc/systemd/system/mysqld3310.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3310/my.cnf
	LimitNOFILE = 5000
	EOF

db02

cat >/data/3307/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3307/data
	socket=/data/3307/mysql.sock
	port=3307
	log-error=/data/3307/mysql.log
	log_bin=/data/3307/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=17
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF
cat >/data/3308/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3308/data
	port=3308
	socket=/data/3308/mysql.sock
	log-error=/data/3308/mysql.log
	log_bin=/data/3308/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=18
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF
cat >/data/3309/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3309/data
	socket=/data/3309/mysql.sock
	port=3309
	log-error=/data/3309/mysql.log
	log_bin=/data/3309/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=19
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF
cat >/data/3310/my.cnf<<EOF
	[mysqld]
	basedir=/data/app/mysql
	datadir=/data/3310/data
	socket=/data/3310/mysql.sock
	port=3310
	log-error=/data/3310/mysql.log
	log_bin=/data/3310/mysql-bin
	binlog_format=row
	skip-name-resolve
	server-id=20
	gtid-mode=on
	enforce-gtid-consistency=true
	log-slave-updates=1
	EOF

cat >/etc/systemd/system/mysqld3307.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
	LimitNOFILE = 5000
	EOF
cat >/etc/systemd/system/mysqld3308.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
	LimitNOFILE = 5000
	EOF
cat >/etc/systemd/system/mysqld3309.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
	LimitNOFILE = 5000
	EOF
cat >/etc/systemd/system/mysqld3310.service<<EOF
	[Unit]
	Description=MySQL Server
	Documentation=man:mysqld(8)
	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
	After=network.target
	After=syslog.target
	[Install]
	WantedBy=multi-user.target
	[Service]
	User=mysql
	Group=mysql
	ExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3310/my.cnf
	LimitNOFILE = 5000
	EOF

1.5 修改权限,启动多实例

chown -R mysql.mysql /data/*
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
systemctl start mysqld3310

mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3310/mysql.sock -e "show variables like 'server_id'"

1.6 分片规划

shard1:
	Master:10.0.0.51:3307
	slave1:10.0.0.51:3309
	Standby Master:10.0.0.52:3307
	slave2:10.0.0.52:3309
shard2:
	Master:10.0.0.52:3308
	slave1:10.0.0.52:3310
	Standby Master:10.0.0.51:3308
	slave2:10.0.0.51:3310

1.7 开始配置主从环境

shard1

10.0.0.51:3307 <-----> 10.0.0.52:3307

db02
	mysql  -S /data/3307/mysql.sock -e "grant replication slave on *.* to repl@'10.0.0.%' identified by '123';"
	mysql  -S /data/3307/mysql.sock -e "grant all  on *.* to root@'10.0.0.%' identified by '123'  with grant option;"

db01
	mysql  -S /data/3307/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_PORT=3307, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3307/mysql.sock -e "start slave;"
	mysql  -S /data/3307/mysql.sock -e "show slave status\G"

db02
	mysql  -S /data/3307/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_PORT=3307, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3307/mysql.sock -e "start slave;"
	mysql  -S /data/3307/mysql.sock -e "show slave status\G"

10.0.0.51:3309 ------> 10.0.0.51:3307

db01
	mysql  -S /data/3309/mysql.sock  -e "CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_PORT=3307, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3309/mysql.sock  -e "start slave;"
	mysql  -S /data/3309/mysql.sock  -e "show slave status\G"

10.0.0.52:3309 ------> 10.0.0.52:3307

db02
	mysql  -S /data/3309/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_PORT=3307, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3309/mysql.sock -e "start slave;"
	mysql  -S /data/3309/mysql.sock -e "show slave status\G"

shard2

10.0.0.52:3308 <-----> 10.0.0.51:3308

db01
	mysql  -S /data/3308/mysql.sock -e "grant replication slave on *.* to repl@'10.0.0.%' identified by '123';"
	mysql  -S /data/3308/mysql.sock -e "grant all  on *.* to root@'10.0.0.%' identified by '123'  with grant option;"
db02
	mysql  -S /data/3308/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_PORT=3308, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3308/mysql.sock -e "start slave;"
	mysql  -S /data/3308/mysql.sock -e "show slave status\G"
db01
	mysql  -S /data/3308/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_PORT=3308, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3308/mysql.sock -e "start slave;"
	mysql  -S /data/3308/mysql.sock -e "show slave status\G"

10.0.0.52:3310 -----> 10.0.0.52:3308

db02
	mysql  -S /data/3310/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_PORT=3308, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3310/mysql.sock -e "start slave;"
	mysql  -S /data/3310/mysql.sock -e "show slave status\G"

10.0.0.51:3310 -----> 10.0.0.51:3308

db01
	mysql  -S /data/3310/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_PORT=3308, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';"
	mysql  -S /data/3310/mysql.sock -e "start slave;"
	mysql  -S /data/3310/mysql.sock -e "show slave status\G"

1.7 检测主从状态

mysql -S /data/3307/mysql.sock -e "show slave status\G"|grep Yes
mysql -S /data/3308/mysql.sock -e "show slave status\G"|grep Yes
mysql -S /data/3309/mysql.sock -e "show slave status\G"|grep Yes
mysql -S /data/3310/mysql.sock -e "show slave status\G"|grep Yes

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

注:如果中间出现错误,在每个节点进行执行以下命令:

mysql -S /data/3307/mysql.sock -e "stop slave; reset slave all;"
mysql -S /data/3308/mysql.sock -e "stop slave; reset slave all;"
mysql -S /data/3309/mysql.sock -e "stop slave; reset slave all;"
mysql -S /data/3310/mysql.sock -e "stop slave; reset slave all;"

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值