分库分表——mysql主从环境搭建

mysql主从环境搭建

下载链接:https://download.csdn.net/download/qq_39246466/32024826?spm=1001.2014.3001.5501

环境: Linux7 <RedHat>
卸载过程:
停止服务: systemctl stop mariadb
查询安装包: rpm -qa | grep mariadb

卸载:
rpm -e mariadb-server
rpm -e mariadb
rpm -e --nodeps mariadb-libs
1. 准备环境
1.1
查看磁盘挂载情况: df –h < 如果没有则挂载系统盘: mount /dev/cdrom /media >
PS: 在虚拟机设置里 对以下步骤进行操作:

( 如果开机自动挂载到桌面上 [ 带桌面的 Linux 系统 ] ,那么需要卸载,然后再进行
重新挂载 )
卸载: umonut /dev/cdrom
挂载: mount /dev/cdrom /media
1.2
使用本地 yum 源:
配置本地 yum cd /etc/yum.repos.d/
创建一个文件 ( repo 结尾 ) ,如: yum.repo ,文件内容如下:进行配置:

2. 开始安装
1.3
执行命令: yum -y install mariadb mariadb-server
1.4
拷贝文件: cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
启动 mariadb 服务并开机自动运行。命令如下:
systemctl start mariadb
systemctl enable mariadb

1.5
查看防火墙状态: systemctl status firewalld
停止防火墙: systemctl stop firewalld
设置开机不启用防火墙: systemctl disable firewalld
1.6
开始设置 Mariadb 数据库 , 执行脚本: /usr/bin/mysql_secure_installation
按照下面提示进行操作即可:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): 安装后默认没有 root 密码,直接
回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password: 输入 root 的新密码
Re-enter new password: 新密码确认
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] 删除匿名用户 Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] 关闭 root 远程登录 Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] 删除 test 数据库 Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] 确定以上所有操作 Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
3. 配置 MariaDB 主从
1.1
修改 vim /etc/my.cnf 配置文件:
主节点不需要进行修改

 从节点进行修改 server-id=2

PS: 进行重启从节点( slave ): systemctl restart mariadb
1.2
在主节点上建立账户并且授权 Slave
登录 MariaDB 数据库: mysql -uroot -proot
建立主从复制用户并授权:
语法:
GRANT REPLICATION SLAVE ON *.* { 所有权限 } TO 'slave'@'%' { 用户名为 slave %
任意地址 } IDENTIFIED BY 'slave';
命令:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave';

1.3
查询 SQL Master 的状态) 命令: SHOW MASTER STATUS;

1.4
配置从节点 SLAVE :(注意在从节点上执行)
登录从服务器: mysql -uroot -proot 进行配置:
语法:
CHANGE MASTER TO
MASTER_HOST=' 主节点的 IP 地址 ', MASTER_USER=' 主节点授权的用户 ', MASTER_PASSWORD='
主节点授权的用户的密码 ',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=2197;
命令:
CHANGE MASTER TO
MASTER_HOST='192.168.11.31',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_
FILE='mysql-bin.000007',MASTER_LOG_POS=2197;
PS: 注意语法逗号前后不要用空格。
1.5
查看主从状态验证:
命令: show slave status\G;

1.6
授权远程用户 root 登录:(主从都需要进行执行)
1.6.1 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT
OPTION;
1.6.2 FLUSH PRIVILEGES;

4. Mariadb 主从同步恢复
5. 进入 slave 服务器,运行:
6. MySQL > show slave status\G
7. .......
Relay_Log_File: localhost-relay-bin.000535
Relay_Log_Pos: 21795072
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
......
8. 解决办法一、
9. Slave_SQL_Running: No
1.程序可能在 slave 上进行了写操作
10. 2.也可能是 slave 机器重起后,事务回滚造成的.
一般是事务回滚造成的:
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;
11.
12. 解决办法二、
13. 首先停掉 Slave 服务:slave stop
到主服务器上查看主机状态:
记录 File 和 Position 对应的值
14. 进入 master
15. mysql> show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 | | |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

16.
17. 然后到 slave 服务器上执行手动同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3306,
> master_log_file= localhost-bin.000094 ',
> master_log_pos= 33622483 ;
1 row in set (0.00 sec)
mysql> start slave ;
1 row in set (0.00 sec)
18.
19. mysql> show slave status\G
*************************** 1. row ***************************
........
Master_Log_File: localhost-bin.000094
Read_Master_Log_Pos: 33768775
Relay_Log_File: localhost-relay-bin.000537
Relay_Log_Pos: 1094034
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
20. 手动同步需要停止 master 的写操作!

21. Mariadb 主从切换
停止主 mariadb systemctl stop mariadb
登录从 mariadb mysql -u root -p
停止 slave stop slave io_thread
stop Slave
将从 mariadb 切换为主 mariadb reset master
现在就可以在从 mariadb 是执行授权 sql
建立主从复制用户并授权:
语法:
GRANT REPLICATION SLAVE ON *.* { 所有权限 } TO 'slave'@'%' { 用户名为 slave %
任意地址 } IDENTIFIED BY 'slave';
命令:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave';
查询 SQL Master 的状态) 命令: SHOW MASTER STATUS;

 

启动主 mariadb systemctl start mariadb
登录从服务器: mysql -u root –proot 进行配置:
语法:
CHANGE MASTER TO
MASTER_HOST=' 主节点的 IP 地址 ', MASTER_USER=' 主节点授权的用户 ', MASTER_PASSWORD='
主节点授权的用户的密码 ',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=2197;
命令:
CHANGE MASTER TO
MASTER_HOST='192.168.11.31',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_
FILE='mysql-bin.000007',MASTER_LOG_POS=2197;
PS: 注意语法逗号前后不要用空格。
1.7
查看主从状态验证:
命令: show slave status\G;

 原来的主变为从 原来的从变为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

择业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值