配置|CentOS7 下配置MySQL主从复制


CentOS7 下配置MySQL主从复制)

  • 一:桥接模式配置静态IP
    • 1.设置静态IP
    • 2.添加网关地址
  • 二:安装配置MySQL5.7
  • 三:主从配置
    • 配置主
    • 配置从

一:桥接模式配置静态IP 这次做桥接模式配置静态IP遇到问题,在网上查了很多资料,但还是遇到了很多坑,现在来整体记录一下。
1.设置静态IP 1.1 先查看本机IP和网卡信息
1.2 修改虚拟机中对应的网卡信息(在root下):
vim /etc/sysconfig/network-scripts/ifcfg-eth32

注:有的centOS可能初始网卡的名称不是eth32,可以自己修改一下名称
TYPE="Ethernet" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="eth0" UUID="ae679cf5-f894-4e23-8a82-60a220f69299" DEVICE="eth0" ONBOOT="yes" IPADDR="192.168.3.200" PREFIX="24" GATEWAY="192.168.34.1" DNS1="114.114.114.114" IPV6INIT=no

修改其中字段:
BOOTPROTO:static,静态,IP不会改变
NMAE和DEVICE:要和自己网卡名称的一致
IPADDR(ip地址):与主机中IP的前三位一致,最后一位需要修改
GATEWAY(网关):与主机一致
DNS1:最好设置为114.114.114.114(我当时设置的为8.8.8.8,然后ping www.baidu.com 会报unknown host,也就是解析不出来,后来改成114.114.114.114就可以了,当然DNS解析服务主要在/etc/resolv.conf中生效)
1.3 保存后使用命令 service network restart重启网络服务
2.添加网关地址
vim /etc/sysconfig/network

# Created by anaconda NETWORKING=yes HOSTNAME=compute GATEWAY=192.168.3.1#与主机网关一致

如果能ping通网关,但是ping www.baidu.com时若出现“unknown host www.baidu.com”(还是域名的问题),则使用命令“vi /etc/resolv.conf ” , 查看其中的DNS是不是114.114.114.114,不是可以修改为它。
# Generated by NetworkManager nameserver 114.114.114.114

二:安装配置MySQL5.7 1.下载MySQL安装
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

如果提示wget命令不存在,先执行
yum -y install wget

下载完成后安装源
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

2.安装MySQL
yum -y install mysql-community-server

3.启动MySQL服务
systemctl start mysqld

4.设置开机启动
systemctl enable mysqld systemctl daemon-reload

5.修改 root登录密码
mysql安装完成之后,会在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。
vim /var/log/mysqld.log

配置|CentOS7 下配置MySQL主从复制
文章图片

先复制此密码,用此密码登录root,不过进去后必须马上修改密码,不然会报如下错误:
mysql> select user(); ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改:
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

此时会报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是应为密码太简单了,而要求的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。但是为了自己测试不想把密,码设置太难所以我们要改validate_password_policy参数的值。
mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec)

现在密码就没有组合要求了。判断密码的标准就只是基于密码的长度了。不用低于8位就不用看下边这些了。
长度由validate_password_length参数来决定。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ |8 | +----------------------------+ 1 row in set (0.00 sec)

validate_password_length参数默认为8,它有最小值的限制,最小值为:
validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。
这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。
如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。
6.设置允许远程登录
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.00 sec)

7.退出
mysql> exit Bye

8.防火墙开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload

9.配置mysql默认编码为utf-8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置
character_set_server=utf8
init_connect=‘SET NAMES utf8’
10.重启MySQL
systemctl restart mysqld

三:主从配置 配置主 1.Master主数据库上进行配置,修改配置文件/etc/my.cnf
vim /etc/my.cnf

添加如下:
设置:log-bin=mysql-bin #用yum安装的mysql数据库/etc/my.cnf文件只是满足基本要求,mysql主从时,查看master日志时没有数据显示,因此在/etc/my.cnf文件中添加一行 log-bin=mysql-bin启用二进制文件
设置:server-id = 1 #此值不能和从数据库的一样,
设置:binlog-ignore-db=mysql #表示哪些库不同步,每个不同步的库写一行(这里应为我用的库不多就没有配置这一行)
配置|CentOS7 下配置MySQL主从复制
文章图片

配置完成重新启动Master数据库;
systemctl restart mysql

执行以下命令登陆本地数据库:
mysql -uroot -p123456

查看Master的状态:
show master status;

配置|CentOS7 下配置MySQL主从复制
文章图片

记录File的mysql-bin.000002 与 Position的154,等会要用到。
分配一个数据库账号给Slave从数据库 Server,是从服务器能够访问Master数据库; (应为我直接用的root库,所以就没有重新分配,之后的操作是一样的,只是换个用户名)
grant replication slave on *.* to 'slave'@'centos-node7' identified by '123456'

配置从 修改/etc/my.cnf添加如下:(和上边一样就不截图了)
server-id=2
设置:replicate-do-db = test (可以指定要复制的库 ,可以不配)
设置:replicate-ignore-db = mysql (忽略的库,可以不配)
然后重启服务器
systemctl restart mysql

然后登录:
mysql -uroot -p123456

通过mysql命令配置同步日志指向:
mysql>change master to master_host=‘192.168.3.199’, master_port=3306, master_user='root',master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=154;

master_host 主服务器的IP地址(内网地址)
master_port 主服务器的PORT端口
master_log_file 和主服务器show master status中的File字段值相同
master_log_pos 和主服务器show master status中的Position字段值相同
mysql>start slave;

#启动服务,stop slave; 停止服务,出错时先停止,再重新配置
mysql>show slave status\G;

【配置|CentOS7 下配置MySQL主从复制】查看SLAVE状态,\G结果纵向显示。必须大写,这个命令无法再sqlyog中使用
systemctl restart mysql.service#重启服务

    推荐阅读