mysql主从复制
1.centos7如何安装mysql
1.yum安装
2.源代码编译安装
3.rpm包安装
yum安装的前提条件,是准备yum源,可以选择清华园,阿里源,等等
1.安装mariadb的yum源有两,一个是阿里云,版本低,功能小
命令:yum install mariadb-server mariadb
2.mariadb官方的yum源,配置的方式
方法:在/etc/yum.repos.d/目录下创建repo文件就是yum仓库
1.创建一个mariadb.repo文件,写入如下内容
vim /etc/yum.repos.d/MariaDB.repo
2、添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
3.安装官方mariadb命令
yum install MariaDB-server MariaDB-client -y
4.启动mariadb相关命令
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动
5.安装好后进行初始化
systemctl start mariadb
6.配置mysql
1.中文编码设置,编辑mysql配置文件/etc/my.cnf,下入以下内容
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
7.授权mysql进行配置
远程连接设置哦设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户
mysql > grant all privileges on *.* to root@'%' identified by 'password';
grant all privileges on *.* to root@'%' identified by '111111'; #远程连接数据库密码111111
#刷新权限
flush privileges;
8.mysql主从复制配置流程如下
流程:主库复制写入,并写下日志,从库访问日志,重新执行sql语句写入
192.168.226.128 主库
192.168.226.129 从库
环境准备,准备2台服务器,安装好2这个数据库
1.主库配置
编辑主库的/etc/my.cof写入如下配置,写下日志
[mysqld] server-id=1 log-bin=s18mysql-bin
2.改了配置文件重启数据库
systemctl restart mariadb
3.master主库添加从库账号,用户远程复制数据的账户
#创建用户 mysql > create user 'username'@'%' identified by 'password'; create user 'kevins'@'%' identified by 'kevins';
#刷新权限 flush privileges;
4.授予kevins这个账号,从库的身份
grant replication slave on *.* to 'kevins'@'%';
5.实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
6.导出当前数据库
mysqldump -uroot -p --all-databases > /opt/all.sql
7.导出数据完毕后,解锁主库,恢复可写;
unlock tables;
8.将备份导出的数据scp至Slave数据库
scp /data/all.sql root@192.168.178.130:/data/
9.查看主库的状态,可以看到日志文件的名字
show master status;
slave从库配置
1.修改从库的配置文件/etc/my.cnf
写入配置:
[mysqld]
server-id=10
2.导入主库的数据
导入数据库第一种方式:mysql -uroot -p < /opt/all.sql
导入第二种:
1.先登录进入数据库
2.执行:source /opt/all.sql
3.此时主从数据库已经在同一个起始点,开始数据同步
这是一段sql,在mysql中执行
mysql > change master to master_host='192.168.178.129(主库地址)',
master_user='kevins', # 给予从库的账号
master_password='kevins',# 给予从库的密码
master_log_file='mysql-bin.000001',#访问日志的文件名
master_log_pos=575;
4.开启从库同步(在数据库中输入)
start slave
5.检测是否主从是否成功
show slave status\G
查看两个参数是否yes
Slave_IO_Runing:yes
Slave_SQL_Runing:yes
6.此时已经可以在主库写入数据,从库实时写入
7.配置mysql主从复制,读写分离
修改从库/etc/my.cnf添加
read-only=true
只可以读的模式
8.在主库上创建一个普通用户,在从库上进行登录,查看是否可以读写分离
主库创建:create user "ywy"@"%" identified by "ywyacd";
从库登录:mysql -uywy -p
密码:ywyacd
9.给这个普通用户查看数据库的权限
grant select on *.* to ysy@"%";