服务器IP 地址规划:
主服务器 IP 172.20.2.46 从服务器 IP 172.20.2.47
二、安装MysqL服务器
1.将下载好的安装到解压到/usr/local目录下
tar -zxvf MysqL-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
2.进入/usr/local目录
cd /usr/local/
3.为MysqL安装目录创建软链接
ln -s MysqL-5.7.22-linux-glibc2.12-x86_64 MysqL
4.为centos添加MysqL用户组和MysqL用户(-s /bin/false参数指定MysqL用户仅拥有所有权,而没有登录权限)
groupadd MysqL
useradd -r -g MysqL -s /bin/false MysqL
5.进入安装MysqL软件的目录,命令如下
cd /usr/local/MysqL
6.修改当前目录拥有者为新建的MysqL用户,命令如下:
chown -R MysqL:MysqL ./
7.安装MysqL,命令如下:
./bin/MysqLd --user=MysqL --basedir=/usr/local/MysqL --datadir=/usr/local/MysqL/data --initialize
9.开启MysqL服务,命令如下:
./support-files/MysqL.server start
如果出现如下错误,则说明MysqL配置文件/etc/my.cnf中的路径不对,修改内容如下,datadir和socket都修改成MysqL的安装目录下,增加[client]板块,用于命令行连接MysqL数据库。
########################################################################
[MysqLd]
port=3306
datadir=/usr/local/MysqL/data
socket=/usr/local/MysqL/MysqL.sock
user=MysqL
max_connections=151
symbolic-links=0
设置忽略大小写
lower_case_table_names = 1
指定编码
character-set-server=utf8
collation-server=utf8_general_ci
开启ip绑定
bind-address = 0.0.0.0
[MysqLd_safe]
log-error=/var/log/MysqLd.log
pid-file=/var/run/MysqLd/MysqLd.pid
#指定客户端连接MysqL时的socket通信文件路径
[client]
socket=/usr/local/MysqL/MysqL.sock
default-character-set=utf8
##########################################################################################################
9.重新开启MysqL服务,如下图所示则开启成功!
./support-files/MysqL.server start
10.将MysqL进程放入系统进程中,命令如下:
cp support-files/MysqL.server /etc/init.d/MysqLd
11.重新启动MysqL服务,命令如下:
./support-files/MysqL.server start
12.配置MysqL环境变量
vi /etc/profile
export PATH=$PATH:/usr/local/MysqL/bin
保存退出,再编译下:
source /etc/profile
13.使用随机密码登录MysqL数据库,命令如下:
MysqL -u root -p
14.进入 MysqL 操作行,为root用户设置新密码(这里设置为 youpassword):
1、 修改用户密码
MysqL> alter user 'root'@'localhost' identified by 'youpassword';
或者
MysqL> set password=password("youpassword");
2、刷新权限
MysqL> flush privileges;
#################################################################
主从配置过程:
主服务器 IP 172.20.2.46 从服务器 IP 172.20.2.47
1)主服务器配置:
[root@MysqL-M ~]# vim /etc/my.cnf # 添加以下内容。
[MysqLd]
#给服务器一个唯一的ID。
server_id=46
#开启二进制日志。
log-bin=MysqL-bin # MysqL-bin 为日志名字。
#指定二进制日志格式。
binlog-format=mixed
备注:
#############################################
mixed #
row # 二进制记录的是磁盘。
stateement # 二进制记录执行语句,如 update
###############################################
哪个好?
update age=age+1 where id=3; // 语句长而磁盘变化少,宜用row
update salary=salary+100; // 语句短,但影响上万行,磁盘变化大,宜用stateement
mixed ,混合的,由系统根据语句,来决定。
########################################################################
2)从服务器配置:
[root@MysqL-S ~]# vim /etc/my.cnf
[MysqLd]
#给服务器一个唯一的ID。
server-id=47
#开启二进制日志。 ## 一方面恢复以后数据丢失使用,也可以做一主多从使用。建议打开。
log-bin=MysqL-bin
#指定二进制日志格式。
binlog-format=mixed
开启 relay-log 中继日志功能。
relay-log=MysqL-relay
########################################################################
两台服务器启动服务。
[root@MysqL-M MysqL]# ./support-files/MysqL.server restart
[root@MysqL-S MysqL]# ./support-files/MysqL.server restart
########################################################################
主服务器操作:
[root@MysqL-M ~]# MysqL -u root -p
Enter password:
Welcome to the MysqL monitor. Commands end with ; or \g.
Your MysqL connection id is 20220
Server version: 5.7.22-log MysqL Community Server (GPL)
MysqL>
查看 master 是否有充当 master 的状态条件 。
MysqL> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | binlog_Do_DB | binlog_Ignore_DB | Executed_Gtid_Set | Position # 字节偏移处。
+------------------+----------+--------------+------------------+-------------------+
| MysqL-bin.000001 | 1559 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
主服务器授权:
MysqL> grant replication client,replication slave on . to repl@'172.20.2.%' identified by 'repl';
Query OK, 0 rows affected, 1 warning (0.01 sec)
MysqL> flush privileges;
Query OK, 0 rows affected (0.00 sec)
########################################################################
从服务器操作:
MysqL> change master to
-> master_host='172.20.2.46',
-> master_user='repl',
-> master_password='repl',
-> master_log_file='MysqL-bin.000001',
-> master_log_pos=1559;
Query OK, 0 rows affected, 2 warnings (0.05 sec)
MysqL> show slave status;
+----------------------------------+-------------+-------------+-------------+---------------+------------------+---------------------+--------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+--------------
MysqL> show slave status \G
1. row
Slave_IO_State: Waiting for master to send event
Master_Host: 172.20.2.46
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: MysqL-bin.000001
Read_Master_Log_Pos: 1559
Relay_Log_File: MysqL-relay.000003
Relay_Log_Pos: 320
Relay_Master_Log_File: MysqL-bin.000001
Slave_IO_Running: Yes
Slave_sql_Running: Yes
sql_Remaining_Delay: NULL
Slave_sql_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_sql_Error_Timestamp:
启动从服务器功能
MysqL> start slave;
########################################################################
测试:
主服务器:
MysqL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| haha |
| MysqL |
| performance_schema |
| sys |
| test8 |
| zabbix |
+--------------------+
7 rows in set (0.01 sec)
MysqL> create database wagnbo
-> ;
Query OK, 1 row affected (0.01 sec)
从服务器:
MysqL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| haha |
| MysqL |
| performance_schema |
| sys |
| test |
| test8 |
| wagnbo |
| zabbix |
+--------------------+
9 rows in set (0.00 sec)
########################################################################