Mysql 安装及配置主从备份
Mysql 安装及配置主从备份
主从备份的意义
它主要是为了读写分离,提高高并发情况下的效率
1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
Mysql 安装
mysql 的服务器在国外,导致在国内下载速度会很慢,我们可以使用国内的镜像加速。
-
华为镜像加速地址 ,https://mirrors.huaweicloud.com/mysql/Downloads/
-
将文件传到需要部署的服务器,解压放置到安装的目录,将mysql 文件的目录添加到 系统环境变量中 例如:
E:\software\mysql-5.7.29-winx64\bin
-
在mysql文件目录下新建 data、logs文件夹,新建 my.ini文件,文件内容为:
[mysqld] server-id = 1 log_bin = E:\\software\mysql-5.7.29-winx64\logs\mysql-bin.log port = 3306 basedir= E:\software\mysql-5.7.29-winx64\bin datadir= E:\\software\mysql-5.7.29-winx64\data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES skip-grant-tables [mysql] default-character-set=utf8
-
初始化mysql
mysqld --initialize
如果报错的话,找不到文件
下载文件,安装上解决问题文件下载地址:
-
安裝为 mysql 服务
mysqld -install
-
启动mysql 服务
net start mysql (启动mysql服务)
-
登录上修改默认密码
初始化生成的默认密码在 data 目录下的 xxx.err 文件里,打开文件搜索 root,既可看到随机生成的默认密码
登录数据库,修改密码mysql -uroot -p
flush privileges;
alter user 'root'@'localhost' identified by 'root';
-
Mysql 安装完成,另外一台从服务器安装步骤和上面类似,不同点是 my.ini 文件的
server-id = 1
修改为server-id = 2
配置主从备份
配置主数据库
-
创建一个同步用户
mysql -uroot -p create user 'test'@'%' identified by '123456'; grant replication slave on *.* to 'test'@'%'; flush privileges; show master status;
如果 输入 show master status 命令后出现如下页面,就说明主服务器配置完成
配置从服务器
-
设置连接到master主服务器
master_host:主服务器Ubuntu的ip地址
master_log_file: 前面查询到的主服务器日志文件名
master_log_pos: 前面查询到的主服务器日志文件位置change master to master_host='10.211.55.5', master_user='slave', master_password='slave', master_log_file='mysql-bin.000006', master_log_pos=590;
-
开启同步
start slave
-
查看同步状态
show slave statues \G
-
测试是否正常联通,在主服务器上新建一个数据库,新建一个表,新建一条记录,然后去从服务器上去查,看时候存在,如果存在就说明配置正常。
create database test123; show databases; use test123; CREATE TABLE student (id int,name varchar(20)); show tables;
可能出现的问题
修改Mysql root属性让root用户可以远程登录
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
主从赋值,从机验证报错:ERROR 3021(HY000):this operation cannot be performed with a running salve io thread
1、停止已经启动的绑定
stop slave
2、重置绑定
reset master
3、执行复制主机命令
change master to master_host = '192.168.12.1'
master_user = 'slave' ,master_password ='123456' ,
master_log_file = 'mysql-bin.000004',master_log_pos = '881'
4、启动复制
start slave