分布式数据库搭建
- 分布式是为了数据安全以及减小服务器压力而想到的办法
- 通过读写分降低服务器的压力同时增加数据的安全性
- mysql 数据库通过主从复制实现读写分离
基本要求
- 首先在一个网段(需要交换机)
- 关闭防火墙(或者防火墙允许通过)
实现读写分离
- 写的服务器为主
- 读的服务器为辅
实验原料:两台服务器
master
关闭防火墙
systemctl stop firewalld.service
备份源文件(以免GG)
cp /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=ip的最后一段地址(如192.168.54.55这里就是55)
binlog-do-db=需要主从复制的数据库
binlog-ignore-db=不要主从复制的数据库
重启服务
systemctl restart mysqld.service
slave
[mysqld]
server-id=ip的最后一段地址(如192.168.54.55这里就是55)
replicate_do_db=需要主从复制的数据库
replicate_ignore_db=不要主从复制的数据库
重启服务
systemctl restart mysqld.service
主从创建一样的数据库及其表结构
- 主库专门提供给从库一个用来同步权限的这账户
1创建同步权限账户
grant replication slave on *.* to 'mysync'@'%' identified by '123456';
2刷新权限
flush privileges;
3显示主数据库信息
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 154 | demo | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
从库上进行 跟随主库的设置
help contents
help Transactions
? change master to
mysql> change master to
-> MASTER_HOST='主服务器ip',
-> MASTER_USER='主服务器提供的同步账户',
-> MASTER_PASSWORD='主服务器提供的同步账户密码',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='对应主服务器信息表的那哥mysql-bin.000002',
-> MASTER_LOG_POS=对应主服务器信息表的那哥154,
-> MASTER_CONNECT_RETRY=10; 链接不上会尝试几次
start slave\G 开启从服务器
mysql> show slave status \G 显示信息
3如果信息如下成功
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes