Project3_day01

知识点:

一、准备数据库服务器

二、搭建数据库服务器

三、配置MySQL主从同步

四、配置读写分离服务器

五、配置数据库服务器

六、配置网站服务器

七、测试配置

八、新知识

项目二拓扑

 

 

  1. 准备数据库服务器

准备2台虚拟机

Ip地址

主机名

额外配置

角色

192.168.4.11

mysql11

添加1块3G硬盘

主数据库

192.168.4.22

mysql22

添加1块3G硬盘

从数据库

二、搭建MySQL数据库服务器

配置步骤

2.1 格式化硬盘

2.2安装mysql软件

2.3 启动数据库服务

2.4 查看初始密码

2.5 修改密码

2.6 登录服务

2.7 建库

2.8 挂载硬盘

配置mysql11

#查看硬盘名

]#lsblk

#分区

]# fdisk /dev/sdb – > n -> p -> 1 -> 回车 -> 回车 -> w

#格式化

mkfs.xfs /dev/sdb1

安装MySQL软件启动服务并登录

]# tar -xf mysql-5.7.17.tar

]# yum -y install mysql-community-*.rpm

]# systemctl start mysqld

]# grep password /var/log/mysqld.log

]# mysqladmin -uroot -p’密码’ password ‘123qqq…A’

建库

]# mysql -uroot -p123qqq…A

Mysql> create database gamedb;

MySQL> exit;

#挂载硬盘

]# vim /etc/fstab

/dev/sdb1 /var/lib/mysql/gamedb xfs defaults 0 0

:wq

]# mount -a

]# df -h | grep “gamedb”

[root@mysql11 ~]# chown -R mysql:mysql /var/lib/mysql/gamedb/

配置mysql22

#查看硬盘名

]#lsblk

#分区

]# fdisk /dev/sdb – > n -> p -> 1 -> 回车 -> 回车 -> w

#格式化

mkfs.xfs /dev/sdb1

安装MySQL软件启动服务并登录

]# tar -xf mysql-5.7.17.tar

]# yum -y install mysql-community-*.rpm

]# systemctl start mysqld

]# grep password /var/log/mysqld.log

]# mysqladmin -uroot -p’密码’ password ‘123qqq…A’

建库

]# mysql -uroot -p123qqq…A

Mysql> create database gamedb;

MySQL> exit;

#挂载硬盘

]# vim /etc/fstab

/dev/sdb1 /var/lib/mysql/gamedb xfs defaults 0 0

:wq

]# mount -a

]# df -h | grep “gamedb”

[root@mysql22 ~]# chown -R mysql:mysql /var/lib/mysql/gamedb/

三、配置主从同步

3.1、配置主数据库服务器 mysql11(192.168.4.11)

具体操作如下:

1) 启用binlog日志文件

2) 用户授权

3) 查看正在使用的binlog日志名和偏移量

mysql11]# vim /etc/my.cnf

[mysqld]

server_id=11

log_bin=master11

:wq

mysql11]# systemctl restart mysqld

mysql11]# mysql -uroot -p123qqq…A

mysql> grant replication slave on *.* to repluser@”%” identified by “123qqq…A”;

mysql>

mysql> show master status;

+—————–+———-+————–+——————+——————-+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+—————–+———-+————–+——————+——————-+

| master11.000001 | 441 | | | |

+—————–+———-+————–+——————+——————-+

1 row in set (0.00 sec)

3.2、 配置从数据库服务器 mysql22(192.168.4.22)

具体操作如下:

1)指定server_id并重启服务

2)管理员登录数据库服务,指定主服务器信息

3)启动slave进程

4)查看IO线程和SQL线程的状态(都是Yes 就配置对了)

mysql22]# vim /etc/my.cnf

[mysqld]

server_id=22

:wq

Mysql22]# systemctl restart mysqld

Mysql22]# mysql -uroot -p123qqq…A

mysql> change master to

master_host=”192.168.4.11,

master_user=”repluser” ,

master_password=”123qqq…A”,

master_log_file=”master11.000001″ ,

master_log_pos=441;

mysql> start slave;

mysql> show slave status \G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

四、配置读写分离服务:

准备虚拟机

主机名

Ip地址

角色

Maxscale77

192.168.4.77

读写分离服务器

具体配置步骤如下:

1)安装软件

yum -y install maxscale-2.1.2-1.rhel.7.x86_64.rpm

2)修改配置文件

vim /etc/maxscale.cnf

[maxscale]

threads=auto

[server1]

type=server

address=192.168.4.11

port=3306

protocol=MySQLBackend

[server2]

type=server

address=192.168.4.22

port=3306

protocol=MySQLBackend

[MySQL Monitor]

type=monitor

module=mysqlmon

servers=server1,server2

user=mysqla

passwd=123qqq…A

monitor_interval=10000

#[Read-Only Service]

#type=service

#router=readconnroute

#servers=server1

#user=myuser

#passwd=mypwd

#router_options=slave

[Read-Write Service]

type=service

router=readwritesplit

servers=server1,server2

user=mysqlb

passwd=123qqq…A

max_slave_connections=100%

[MaxAdmin Service]

type=service

router=cli

#[Read-Only Listener]

#type=listener

#service=Read-Only Service

#protocol=MySQLClient

#port=4008

[Read-Write Listener]

type=listener

service=Read-Write Service

protocol=MySQLClient

port=3306

[MaxAdmin Listener]

type=listener

service=MaxAdmin Service

protocol=maxscaled

socket=default

port=4016

:wq

五、配置数据库服务器

5.1 、用户授权

只需要在主数据库服务器mysql11 用户 从服务器会自动同步用户

replication slave, 查看主从角色

replication client 查看mysql数据库服务运行状态

[root@mysql11 ~]# mysql -uroot -p123qqq…A

添加监控用户

mysql> grant replication slave , replication client on *.* to mysqla@”%” identified by “123qqq…A”;

添加路由用户

mysql> grant select on mysql.* to mysqlb@”%” identified by “123qqq…A”;

mysql> exit;

在从数据库服务器查看是否同步授权用户名

[root@mysql22 ~]# mysql -uroot -p123qqq…A

mysql> select user from mysql.user where user=”mysqla”;

mysql> select user from mysql.user where user=”mysqlb”;

 

5.2、启动maxscale服务 (在maxscale77 主机启动服务)

[root@maxscale77 ~]# maxscale /etc/maxscale.cnf

5.3、查看maxscale服务状态

[root@maxscale77 ~]# netstat -utnlp | grep 4016

tcp6 0 0 :::4016 :::* LISTEN 1125/maxscale

[root@maxscale77 ~]# netstat -utnlp | grep 3306

tcp6 0 0 :::3306 :::* LISTEN 24809/maxscale

tcp 0 0 192.168.4.77:43696 192.168.4.11:3306 ESTABLISHED 24809/maxscale

tcp 0 0 192.168.4.77:56990 192.168.4.22:3306 ESTABLISHED 24809/maxscale

 

5.4查看监控信息(在maxscale77 访问自己的管理服务,查看监控信息)

[root@maxscale77 ~]# maxadmin -uadmin -pmariadb -P4016

MaxScale> list servers

Servers.

——————-+—————–+——-+————-+——————–

Server | Address | Port | Connections | Status

——————-+—————–+——-+————-+——————–

server1 | 192.168.4.11 | 3306 | 0 | Master, Running

server2 | 192.168.4.22 | 3306 | 0 | Slave, Running

——————-+—————–+——-+————-+——————–

MaxScale> exit

[root@maxscale77 ~]#

六、配置网站服务

准备虚拟机

Ip地址

主机名

角色

192.168.4.33

Web33

Nginx网站服务器

具体配置如下:

1)安装软件

2) 修改nginx配置文件

3)启动服务

安装依赖

[root@web33 ~]# yum -y install gcc zlib-devel pcre-devel

安装NGINX

[root@web33 ~]# tar -xf nginx-1.12.2.tar.gz //解压

[root@web33 ~]# cd nginx-1.12.2 //进源码目录

[root@web33 nginx-1.12.2]# ./configure //配置

[root@web33 nginx-1.12.2]# make && make install

修改配置文件

[root@web33 ~]# vim +65 /usr/local/nginx/conf/nginx.conf //修改主配置文件

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

:wq

//启动服务

[root@web33 ~]# /usr/local/nginx/sbin/nginx

安装php软件

[root@web33 ~]# yum -y install php php-devel php-mysql php-fpm

启动服务

[root@web33 ~]# systemctl start php-fpm

七、测试配置

7.1、 添加网站存储数据的连接用户

在主服务器连接服务

[root@mysql11 ~]# mysql -uroot -p123qqq…A

创建存储数据的表

create table gamedb.user ( name char(30) , password char(20));

添加用户

grant select, insert on gamedb.* to yaya@”%” identified by “123qqq…A”;

7.2、在从服务器数据同步

[root@mysql22 ~]# mysql -uroot -p123qqq…A -e ‘desc gamedb.user’

[root@mysql22 ~]# mysql -uroot -p123qqq…A -e ‘select user from mysql.user where user=”yaya”‘

7.3 编写PHP脚本

web33]# vim /usr/local/nginx/html/test.php

<?php

#连接数据库服务器

$conn=mysql_connect(“192.168.4.77″,”yaya”,”123qqq…A”);

#选择库

mysql_select_db(“gamedb”);

#定义存储数据命令

$sql = ‘insert into user (name,password) values (“AAA”,”666888″)’;

#执行命令

mysql_query($sql);

#关闭连接

mysql_close();

#数据存储提示

echo “save data ok”;

?>

:wq

访问脚本

Web33~]$ curl http://localhost/test.php

Save data ok

 

7.4在据库服务器查看数据

[root@mysql11 ~]# mysql -uroot -p123qqq…A -e ‘select * from gamedb.user’

mysql: [Warning] Using a password on the command line interface can be insecure.

+——+———-+

| name | password |

+——+———-+

| AAA | 654321 |

+——+———-+

[root@mysql11 ~]#

[root@mysql22 ~]# mysql -uroot -p123qqq…A -e ‘select * from gamedb.user’

mysql: [Warning] Using a password on the command line interface can be insecure.

+——+———-+

| name | password |

+——+———-+

| AAA | 654321 |

+——+———-+

[root@mysql22 ~]#

八、新知识

实现数据读写分离的同时,实现从服务器查询数据负载均衡

8.1、准备新虚拟机

主机名

Ip地址

角色

额外配置

Pxc66

192.168.4.66

Slave服务器

添加一块3G硬盘

8.2 部署MySQL服务

#查看硬盘名

]#lsblk

#分区

]# fdisk /dev/sdb – > n -> p -> 1 -> 回车 -> 回车 -> w

#格式化

mkfs.xfs /dev/sdb1

安装MySQL软件启动服务并登录

]# tar -xf mysql-5.7.17.tar

]# yum -y install mysql-community-*.rpm

]# systemctl start mysqld

]# grep password /var/log/mysqld.log

]# mysqladmin -uroot -p’密码’ password ‘123qqq…A’

建库

]# mysql -uroot -p123qqq…A

Mysql> create database gamedb;

MySQL> exit;

#挂载硬盘

]# vim /etc/fstab

/dev/sdb1 /var/lib/mysql/gamedb xfs defaults 0 0

:wq

]# mount -a

]# df -h | grep “gamedb”

]# chown -R mysql:mysql /var/lib/mysql/gamedb

8.3 确保数据一致

第一步:在MySQL11主机完全备份数据

1 安装软件

2 完全备份

3 拷贝备份文件给主机pxc66

[root@mysql11 ~]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm

[root@mysql11 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

[root@mysql11 ~]# innobackupex -uroot -p123qqq…A /allbak –no-timestamp

[root@mysql11 ~]# scp -r /allbak root@192.168.4.66:/root/

第二步:在pxc66主机数据完全恢复

1 安装软件

2 停止服务

3 清空数据库目录

4 准备恢复数据

5 拷贝数据

6 修改所有者组用户为MySQL

7 启动服务

[root@pxc66 ~]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm

[root@pxcnode66 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

[root@pxc66 ~]# systemctl stop mysqld

[root@pxc66 ~]# umount /var/lib/mysql/gamedb 卸载挂载

[root@pxc66 ~]# vim /etc/fstab

#/dev/vdb1 /var/lib/mysql/gamedb xfs defaults 0 0

[root@pxc66 ~]# rm -rf /var/lib/mysql/*

[root@pxc66 ~]# innobackupex –apply-log /root/allbak/ 准备恢复数据

[root@pxc66 ~]# innobackupex –copy-back /root/allbak/ 拷贝到数据库目录里

[root@pxc66 ~]# chown -R mysql:mysql /var/lib/mysql //修改所有者

[root@pxc66 ~]# systemctl start mysqld //启动服务

第三步: 把pxc66 主机配置为mysql11的slave服务器

#指定server_id

[root@pxc66 ~]# vim /etc/my.cnf

[mysqld]

Server_id = 66

:wq

[root@pxc66 ~]# systemctl restart mysqld

#在备份文件里查看 完全备份后 对应的日志名和偏移量

[root@pxc66 ~]# grep master11 /root/allbak/xtrabackup_info

binlog_pos = filename ‘master11.000001’, position ‘5543’

[root@pxc66 ~]#

#管理员登录指定主服务器信息

[root@pxc66 ~]# mysql -uroot -p123qqq…A

mysql> change master to

master_host=”192.168.4.11″,

master_user=”repluser”,

master_password=”123qqq…A”,

master_log_file=”master11.000001″,

master_log_pos=5543;

mysql> start slave ;

 

Mysql> show slave status \G

Slave_IO_Running: Yes //IO线程正常

Slave_SQL_Running: Yes //SQL线程正常

第四步:配置读写分离服务器

修改配置文件

[root@maxscale77 ~]# vim /etc/maxscale.cnf

指定第3台服务器Ip地址

[server3]

type=server

address=192.168.4.66

port=3306

protocol=MySQLBackend

添加监视server3

[MySQL Monitor]

type=monitor

module=mysqlmon

servers=server1,server2,server3

user=mysqla

passwd=123qqq…A

monitor_interval=10000

定义只读服务

[Read-Only Service]

type=service

router=readconnroute

servers=server2,server3

user=mysqlb

passwd=123qqq…A

router_options=slave

读写分离服务添加server3

[Read-Write Service]

type=service

router=readwritesplit

servers=server1,server2,server3

user=mysqlb

passwd=123qqq…A

max_slave_connections=100%

定义只读服务端口

[Read-Only Listener]

type=listener

service=Read-Only Service

protocol=MySQLClient

port=4008

重启服务

[root@maxscale77 ~]# killall -9 maxscale

[root@maxscale77 ~]# maxscale /etc/maxscale.cnf

[root@maxscale77 ~]# netstat -utnlp | grep maxscale

tcp6 0 0 :::4008 :::* LISTEN 22949/maxscale

tcp6 0 0 :::3306 :::* LISTEN 22949/maxscale

tcp6 0 0 :::4016 :::* LISTEN 22949/maxscale

[root@maxscale77 ~]#

查看监控信息

[root@maxscale77 ~]# maxadmin -uadmin -pmariadb -P4016

MaxScale> list servers

Servers.

——————-+—————–+——-+————-+——————–

Server | Address | Port | Connections | Status

——————-+—————–+——-+————-+——————–

server1 | 192.168.4.11 | 3306 | 0 | Master, Running

server2 | 192.168.4.22 | 3306 | 0 | Slave, Running

server3 | 192.168.4.66 | 3306 | 0 | Slave, Running

——————-+—————–+——-+————-+——————–

MaxScale>

在从主机添加不同的记录

[root@mysql22 ~]# mysql -uroot -p123qqq…A

mysql> insert into gamedb.user values(“22AA”,”22AA”);

[root@pxc66 ~]# mysql -uroot -p123qqq…A

mysql> insert into gamedb.user values(“66BB”,”66BB”);

测试配置

[root@web33 ~]# mysql -h192.168.4.77 -P4008 -uyaya -p123qqq…A -e ‘select * from gamedb.user’

+——+———-+

| user | password |

+——+———-+

| AAA | 666888 |

| 22AA | 22AA |

+——+———-+

[root@web33 ~]# mysql -h192.168.4.77 -P4008 -uyaya -p123qqq…A -e ‘select * from gamedb.user’

+——+———-+

| user | password |

+——+———-+

| AAA | 666888 |

| 66BB | 66BB |

+——+———-+

[root@web33 ~]#

原文地址:http://www.cnblogs.com/zky-1/p/16792406.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性