复制
linux企业部分:mysql数据库的部署、网页部署、主从复制、GTID复制、半同步复制
一、mysql数据库的部署
1)下载安装mysql
获取本地资源:
lftp 172.25.254.250 get mysql-boost-5.7.31.tar.gz tar zxf mysql-boost-5.7.31.tar.gz cd mysql-5.7.31 yum install cmake
加装模块(这里我们不用数据库的rpm包,是为了定制我们自己专用的数据库,所以需要加装模块)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/mysql-5.7.31/boost/boost_1_59_0
发现加装模块时会报错,原因是因为我们缺少对应的模块。安装好对应的模块就可以完成加装了。
加装模块为:
yum install bison.x86_64 yum install gcc-c++
在进行cmake。
完成模块的加装后,进行编译:
make
,因为数据库的内容比较多,所以编译过程会很久。
编译完成后,安装:
make install。
2)配置mysql
在家目录
下,vim .bash_profile:
source .bash_profile
##重新读取文件,让mysql指令在全局生效。
mkdir /data/mysql
##建立mysql目录
useradd -M -d /data/mysql -s /sbin/nologin mysql
##创建mysql用户,指定其目录以及运行时的使用的shell环境。
chown mysql.mysql /data/mysql
##设置目录的用户及用户组
vim /etc/my.cnf:
cd /usr/local/mysql/support-files cp mysql.server /etc/init.d/mysqld
##将数据库服务启动文件复制为/etc/init.d/mysqld。
做完这些后可以开时,针对数据库开始操作。
mysqld --initialize --user=mysql
##初始化数据库
/etc/init.d/mysql start
##开启数据库服务
初始化完成后,会生成一个初始密码,在加载数据的右下角。
mysql_secure_installation
##登录数据库,更改设定
首次登录后,完成如上两张图片的操作。其实不需要我的提示,我们自己也可以通过这些问题,来设定。
完成首次登录的设定后
mysql -pwestos
##登录数据库
二、网页部署
获取本地资源:
lftp 172.25.524.250 get phpMyAdmin-5.0.2-all-languages.zip
因为是zip类型的压缩包,需要下载相应的解压工具
yum install unzip -y
unzip phpMyAdmin-5.0.2-all-languages.zip
解压完成后,将其移动到我们需要他在的路径下面:
mv phpMyAdmin-5.0.2-all-languages.zip /usr/local/nginx/html/phpadmin
systemctl enable php-fpm.service
##设置服务开机自启动。
完成这些操作后,我们还需要对其nginx配置文件进行修改,添加mysql文件的相应路径。
vim /usr/local/nginx/conf/nginx.conf
重启nginx服务
nginx -s reload
之后修改与php相关的配置文件:
vim /usr/local/php/etc/php.ini
在这两行后面写入mysql服务的数据路径
systemctl restart php-fpm.service
##重启php服务
测试
浏览器访问:http:172.25.37.1/phpadmin/index.php
用户:root
密码:westos
进入数据库。
三、主从复制
1)配置slave数据库。
server1
在主从复制之前,首先需要设置一个从机的配置:
首先在作为master的sever1中作过的配置文件传给从机sever2
scp /usr/local/mysql 172.25.37.2:/usr/local
scp /etc/my.cnf 172.25.37.2:/etc/
server2
在sever2中修改/etc/my.cnf这个文件:
在sever2中, 在家目录下,修改.bash_profile,添加mysql指令的存放路径。之后在重新读取这个文件source .bash_profile
which mysql
##查看是否生效
做完基本的配置文件的修改后。
下边的操作在之前做过,所以就不再截图演示了
开始搭建mysql的使用环境:
mkdir /data/mysql -p
##创建配置文件中的指定路径
useradd -M -d /data/mysql -s /sbin/nologin mysql
##新建用户mysql
chown mysql.mysql /data/mysql
##修改在指定路径的所属人和所属组
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
##将mysql服务的启动文件,复制为/etc/init.d/msyqld
myql --initialize --usermysql
##初始化数据库
/etc/init.d/mysql start
##开启数据库服务
mysql_secure_installation
##首次登录,设定新密码等
master
vim /etc/my.cnf
mysql -pwestos
##进入数据库,(一般情况下,密码是不建议直接输入在密令中)
create user 'repl'@'%' identified by 'westso'
##建立用于主从复制操作的用户
grant replication slave on *.* to 'repl'
##授权
show master status
##查看状态
在同步过程之前要先给master中我们要同步的数据库进行备份,并且将备份好的数据下发给从机server2。
master
mysqldumlp -p westos > dump.sql
scp dump.sql 172.25.37.2:
server2
在server2的数据库中,要先建立一个和master中备份数据库名称一致的数据库
mysql -pwestos
create database westos;
##进入后建立库
完成上一步后,退出数据库,将备份的内容导入建立的数据库westos中。这时master和server数据库的内容时一致的。
修改从机sever2的配置文件:
vim /etc/my.cnf
同样在server2中,进行slave的配置:
mysql -pwestos
change master to master-host=‘172.25.37.1’, master_user='repl', master_password='westos', master_log_file='mysql-bin.000001', master_log_pos=1614
!注意!:master_log_file=’’,master_log_pos=,后边跟的参数和查看master状态中的参数要一致。
完成这些后,主从复制就已经完整的结束了。
测试:
mysql -pwestos
start slave
show slave status\G
四、GTID复制
GTID复制方式使用的原因:
1.一个事务对应一个唯一GTID,一个GTID在一个服务器上只会执行一次
2.GTID是用来代替传统复制的方法,GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置
3.减少手工干预和降低服务故障时间,当主机挂了之后通过软件从众多的备机中提升一台备机为主机
master与server都作
vim /etc/.cnf
:
!!!注意:如果中间server1的配置文件中需要加入log_slave_updates=ON,这个参数。
enforce-gtid-consistency=ON ##强制GTID一致性开启
gtid_mode=ON ##GTID权限开启。
/etc/init.d/mysqld restart
##重启服务
server1
mysql -pwestos
##进入数据库
show global variables like '%GTID%'
第二行:强制执行_gtid_consistency=ON
可以看出强制执行GTID的一致性已经打开
stop slave
##在数据库中停止slave进程
change master to master_host='172.25.37.1', master_user='repl', master_password='westos', master_auto_position=1;
重新设置
start slave
##重新打开slave进程
验证:
show slave status\G
五、半同步复制
介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。
master
mysql -pwestos
install plugin rpl_semi_sync_master soname 'semisync_master.so;'
set global rpl_semi_sync_master_enabled =1;
show status like 'Rpl_semi%'
server
进入数据库:
mysql -p install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; set global rpl_semi_sync_slave_enabled=1; stop slave io_thread; start slave io_thread;