一:系统说明:准备两个centOS7.4 服务器 A,B
二: 安装mysql5.7
1:停到之前的mysql 如果有安装的卸载掉。
2: 安装mysql5.7 三部曲
1) // 指定安装包路径并下载
]# cd usr/local/src
]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
2)解压rpm包到yum源上
]# rpm –ivh mysql57-community-release-el7-8.noarch.rpm
3) yum 安装mysql5.7
]# Yum –y install mysql-server
3:安装完成之后启动
]# systemctl start mysqld
4:mysql5.7 增加了密码安全机制,第一次登陆密码。输入下面语句查看
]# grep "password" /var/log/mysqld.log
5:如果要修改root 密码又要方便记得的话,要把这个安全机制关闭,在mysql配置文件 /etc/my.cnf 中加入 validate_password=off 注意。这句一定要加在 [mysqld] 后面
6: 主库需要开启3306/tcp 端口
]# firewall-cmd --add-port=3306/tcp -- permanent
]# firewall-cmd --reload
7:这样mysql5.7 就按照好了。两台服务器A,B 都按这个方法安装好。
二:配置主从
配置主数据库 A ip 为 192.168.0.144 (这个是我本地ip ,请自行修改)
1:修改mysql配置文件 /etc/my.cnf 插入
[mysqld]
## 主从配置
#设置服务器ID 为1表示主服务器server-id=1
## 启动mysql二进制日志系统
log-bin=mysql-bin
## 需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
## 不需要同步的数据库名
binlog-ignore-db=mysql
退出保存。
2:重启mysql
]# systemctl restart mysqld
3:登录mysql
]# mysql -u root -p // 回车之后输入密码登录
4:查看server-id
mysql> show variables like 'server_id';
5:增加一个可以复制的账号 rep / 123456
mysql> grant replication slave on *.* to 'rep'@'192.168.0.%' identified by '123456'; #注意:用户名slave和密码123456可以自定义
6:查看主库信息
mysql> show master status;
配置从库 B ip 为 192.168.0.145
1:修改mysql配置文件 /etc/my.cnf
[mysqld]
server-id=2 #设置服务器id,为2表示从服务器(也可以为其他值)
退出保存。
2: 查看server-id 是否成功
mysql> show variables like 'server_id';
3:关闭 slave-> 配置复制用户 ->开启slave
mysql> stop slave; // 关闭
mysql>change master to
master_host='192.168.0.144', // 主库host
master_port=3306, // 主库的端口
master_user='rep', // 复制用户名
master_password='123456', // 复制用户名密码
master_log_file='mysql-bin.000003', // 主库的bin 文件
master_log_pos=1666; // 主库的pos 号
mysql> start slave; // 开启
备注:中间的语句,为了好做注释,所以全部分开写,实际执行的时候,就直接一条语句就好了,
例:
change master to master_host='192.168.0.144',
master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=1666;
测试主从:
在主库中新建一个test 表,如果在从库也能查看到,就证明设置成功了
查看状态:
mysql> show slave status \G
这样一个主从复制就算是搭建好了。
特别说明:我也是一名菜鸟。只是搭好了这个环境。至于之后遇到的问题,请查看状态看报错信息自行处理
例: 1:主库在,从库挂了。
2:操作失误,在从库上修改了数据,而主库没改