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主从复制_第1张图片

先复制此密码,用此密码登录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 --permanent

firewall-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主从复制_第2张图片

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

systemctl restart mysql

执行以下命令登陆本地数据库:

mysql -uroot -p123456

查看Master的状态:

show master status;

CentOS7 下配置MySQL主从复制_第3张图片

记录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;       

查看SLAVE状态,\G结果纵向显示。必须大写,这个命令无法再sqlyog中使用

systemctl restart mysql.service        #重启服务

你可能感兴趣的:(配置,MySQL,主从复制,静态ip,CentOS7)