Centos7安装MySQL并实现主从数据库同步
一、 安装MySQL数据库
1、 创建mysql文件夹:mkdir /home/mysql 用于存放MySQL安装包
链接: https://pan.baidu.com/s/1A2HBp5gmxv8RCur45Qb2EA
提取码: zrdq
2、 本人利用的是secureCRT将下载的MySQL安装包上传到服务器
3、 解压tar文件:tar -xvf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
4、 卸载冲突的RPM组件
在我们安装mysql相关组件的时候,如果不将此冲突的组件删除掉,我们是安装不成功的。
查看postfix和mariadb-libs相关的组件:
rpm -qa | grep postfix
rpm -qa | grep mariadb
卸载postfix和mariadb-libs:
rpm -e --nodeps postfix-2.10.1-6.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
5、 安装相应的依赖 :
yum -y install libaio
yum -y install net-tools
yum -y install perl
6、 安装mysql组件
经过上面的解压操作,我们得到了很多rpm文件。但是我们不需要这么多,我们只需要安装以下四个组件就可以了:
因为具有依赖关系,所以我们需要按顺序执行。
用 rpm -ivh 文件名 就能安装相应的组件。
在执行server的时候,需要依赖安装一些工具组件,已经在上文有说明了安装命令
rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm
默认数据存储路径/var/lib/mysql 配置文件路径/etc/my.cnf
7、 修改MySQL密码
mysql安装完成之后我们是没有设置密码的,但是mysql为我们设置了一个临时的密码,我们可以查看mysql的日志知道这个临时密码,查看临时密码前确保数据库启动。
(1)启动数据库
查看mysql是否启动:service mysqld status
启动mysql:service mysqld start
停止mysql:service mysqld stop
重启mysql:service mysqld restart
(2)查看临时密码:grep password /var/log/mysqld.log
这样我们得知临时密码是: #BRm.Mi/s6.i,然后我们用这个临时密码登录数据库。(数据库的密码需要满足以下条件:大小写字母,数字和特殊符号)
登录mysql(命令:mysql -p),输入临时密码
设置新密码:set password = password(“Mysql_123”);
退出当前登录:quit;
重新登录,此时就能用新密码登录了,然后就可以进行数据库操作了。
8、 允许远程连接
开启mysql远程访问权限,允许远程连接
mysql -u root -p #这里回车输入密码
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
9、 创建数据库,并指定UTF-8编码
CREATE DATABASE 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci;
10.导入数据
将准备好的数据库文件20151010.sql文件通过工具,上传至/root目录下,并等待上传完毕。
登录数据成功之后
use 数据库名
执行命令source /root/20151010.sql
二、 数据库主从同步数据
1、 环境:
主服务器:centos 7.0 mysql 5.7.23 IP:192.168.41.131
从服务器:centos 7.0 mysql 5.7.23 IP:192.168.41.132
主从服务器都为test1数据库
主服务器
1.1、创建一个复制用户,具有replication slave 权限。
在登录的数据库的情况下执行下面语句,其中cpuser是用户名、192.168.41.132是从服务器IP地址、Mysql_123是密码,一定一定要flush刷新权限:
mysql>grant replication slave on *.* to 'cpuser '@'192.168.41.132' identified by 'Mysql_123 ';
mysql>flush privileges;
1.2、编辑my.cnf
vi /etc/my.cnf
添加
server-id=131 #唯一标识,暂时用的IP最后一位
log-bin=/var/lib/mysql/mysql-bin #日志路径
slave-skip-errors=all #是跳过错误,继续执行复制操作(可选)
sync_binlog=1
log-bin-trust-function-creators=1
binlog-do-db=test1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
1.3、重启mysql数据库
service mysqld restart
1.4、得到binlog日志文件名和偏移量(此处记住File名称和Position值,后面slave服务器配置时需要用到)
mysql> show master status;
+---------------+--------- +--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+--------- +--------------+------------------+
| mysql-bin.000009 | 154 | | |
+---------------+----------+--------------+-----------------+
1 row in set (0.00 sec)
从服务器
2.1、编辑my.cnf文件
vi /etc/my.cnf
添加
server-id=132 #唯一标识
replicate-do-db=test1 #数据库
slave-skip-errors=all #与上相同
slave-net-timeout=6 #同步时间6S
2.2、重启从数据库
service mysqld restart
2.3、对从数据库进行相应设置
此处要注意logfile的名称和position的值,其余host、user和password为主数据库设置的账号和密码
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
-> master_host='192.168.41.131',
-> master_user='cpuser',
-> master_password='Mysql_123',
-> master_log_file='mysql-bin.000009',
-> master_log_pos=154;
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
2.4、执行mysql> show slave status\G;
看见如下双Yes则欧克;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2.5、测试:
在master上,你可以看到slave的I/O线程创建的连接:在master上输入show processlist\G;
2.6、结果
最后在主数据同步数据库中表插入数据,然后看从库就可以看见同步,到此结束