CentOS安装mysql 和主从配置、读写分离

一、安装mysql

 1、下载

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

2、解压压缩包到目标位置

tar xvzf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 
mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/

3、文件重命名

mv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql

4、创建数据仓库目录

--/data/mysql 数据仓库目录
# mkdir /data/mysqldata 
#ls /data/

5、新建mysql用户、组及目录

#      ---新建一个msyql组
# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql     ---新建msyql用户禁止登录shell

或者是:

[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd -r -g mysql mysql

 

6、改变目录属有者(授权)

#cd /usr/local/mysql
#pwd
#chown -R mysql .

#chgrp -R mysql .

#chown -R mysql /data/mysqldata

或者是

[root@001 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@001 mysql]# ldconfig

[root@001 mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh

[root@001 mysql]# source /etc/profile.d/mysql.sh

[root@001 mysql]# chkconfig mysqld on

[root@001 mysql]# vim /etc/my.cnf

 

 

 

7、初始化mysqld

# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata

 

 此处需要注意记录生成的临时密码,如上文结尾处的:>jf+sbhCQ3gV (后面会用到)

 

8、编辑配置文件及将mysql的服务脚本放到系统服务中,并配置环境变量让系统可以直接使用mysql的相关命令

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# ldconfig
[root@localhost mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@localhost mysql]# source /etc/profile.d/mysql.sh
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# vim /etc/my.cnf 
basedir=/usr/local/mysql #mysql路径

datadir=/data/mysqldata #mysql数据目录

socket=/tmp/mysql.sock

user=mysql

server_id=1 #MySQLid 后面2个从服务器需设置不同

port=3306

9、启动mysql

service mysqld start

如果报如下错误:

将 /etc/my.cnf文件改为:

[mysqld]
basedir=/usr/local/mysql #mysql路径

datadir=/data/mysqldata #mysql数据目录

socket=/tmp/mysql.sock

user=mysql

server_id=1 #MySQLid 后面2个从服务器需设置不同

port=3306
#datadir=/var/lib/mysql
#ervice mysqld startsocket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid

#

 

 

10、重置mysql密码(如果  输入出事密码时一直报错请参考下面的解决方案,我第二次安装时 输入初始化密码  报密码不对的错误,所以就在网上又查了解决方案,记录一下供自己和大家一起参考  这是参考博文的地址   https://blog.csdn.net/keepd/article/details/77151006

执行步骤:

vi /etc/my.cnf

在末尾加上一行代码

skip-grant-tables #跳过密码登录

保存退出

登录mysql

mysql -u root 
不要加 -p

修改密码:
use mysql ;
    mysql5.7 使用这个语法
update mysql.user set authentication_string=password('123456') where user='root' ;

flush privileges;

重启mysql 

systemctl restart mysql

刷新权限:FLUSH PRIVILEGES;

11、测试情况下关闭防火墙

service firewalld stop

线上情况开放3306端口

 

先登录到mysql

mysql> use mysql;

mysql> update user set host = '%' where user = 'root'; #按实际情况设置

mysql> flush privileges;

上面步骤,解决远程连接时报的  1130 错误

创建数据库 stu  主从测试的时候用

create database stu;

create table stu(id int,age int);

ps:第二次  使用初始化密码登录时出错,解决方案  没有出错 可直接略过:

1,停止mysql服务

systemctl stop mysqld.service

2,修改配置文件无密码登录

vi /etc/my.cnf
在最尾部加上

skip-grant-tables
保存

3,启动mysql

systemctl start mysqld.service

4,登录musql
mysql -u root
此处注意不要加-p


5,修改密码,mysql5.7用此语法

use mysql ;

 update mysql.user set authentication_string=password('123456') where user='root' ;

6,回到第二步骤去掉加上的
skip-grant-tables
保存 重启mysql就ok了

#########################################################################

其实默认安装完了mysql后或在日志中生成一个默认的密码 /var/log/mysqld.log 中

拿到默认密码后登录mysql  进行密码重新设置

set password=password('you password');
如果密码级别与默认的级别要求不符时候会报

Your password does not satisfy the current policy requirements
此时需要修改级别与最小的默认密码位数
set global validate_password_policy=0;
set global validate_password_length=4;
然后在进行设置密码就好了

出自:https://blog.csdn.net/keepd/article/details/77151006

ps结束

二、数据库主从复制开始(提前准备两台mysql服务器-->虚拟机):192.168.131.131(slave)和192.168.131.134(master)

1、master上开启binlog日志,配置如下

vim /etc/my.cnf
[mysqld]

basedir=/usr/local/mysql

datadir=/data/mysqldata

socket=/tmp/mysql.sock

user=mysql

server-id=1

port=3306

server-id=1 #服务器的唯一标识 靠它区分是不同的服务器

log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径

#作为主机的配置

binlog-do-db=stu#要给从机同步的数据库(我自己创建)

binlog-ignore-db=mysql #不给从机同步的库(多个写多行)

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改

[root@001 employees_db]# service mysqld restart #重启数据库
# service mysqld restart #重启数据库

测试log_bin是否成功开启

mysql> show variables like '%log_bin%';

 

2master的数据库中建立备份账号backup为用户名,%表示任何远程地址,如下表示密码为123456的任何远程地址的backup都可以连接master主机

 

 

mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456';

mysql> use mysql

mysql> select user,authentication_string,host from user;

 

3、查看master状态

 

mysql> show master status\G #

 

有3个重要的地方已经画出来了。查看主服务器上当前的二进制日志名和偏移量值这里的file 和position 要和从上的一致

 

导出master中的数据,然后导入slave 

在master主机上:

[root@localhost /]# mysqldump -uroot -p123456 -hlocalhost stu > /opt/stu.bak
mysqldump: [Warning] Using a password on the command line interface can be insecure.

需要安装插件:

yum install openssh-clients -y #(注:slave也需要安装)

讲备份发给slave

[root@localhost /]# scp /opt/stu.bak root@192.168.131.131:/opt/
root@192.168.131.131's password: 
stu.bak                                                                          100% 1811     1.7MB/s   00:00    

配置slave:

vim /etc/my.cnf
[mysqld]

basedir=/usr/local/mysql #mysql路径

datadir=/data/mysqldata #mysql数据目录

socket=/tmp/mysql.sock

user=mysql

server_id=2 #MySQLid 后面2个从服务器需设置不同

port=3306

 #加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。

read_only = 1

master_info_repository=TABLE

relay_log_info_repository=TABLE

 

然后将master传过来的备份导入到slave mysql数据库中,slave上的stu数据库不存在则先创建,然后再导入

 

 
[root@localhost mysql]# mysql -uroot -p123456 -hlocalhost stu < /opt/stu.bak
[root@localhost mysql]# service mysqld restart
登录slave数据库,并做如下设置

[root@002 ~]# mysql -uroot -p123456

mysql> stop slave;

mysql> change master to

-> master_host='192.168.1.222', #master的ip

-> master_user='backup', #备份用户名

-> master_password='123456', #密码

-> master_log_file='mysql-bin.000004', #上面截图,且要与master的参数一致

-> master_log_pos=154; #上面截图,且要与master的参数一致

mysql> start slave;#上面截图,且要与master的参数一致

-> master_log_pos=154; #上面截图,且要与master的参数一致

mysql> start slave;

查看slave从机的状态

mysql> show slave status \G

 

两个yes表示设置成功

 

关闭掉主数据库的读取锁定,并测试

 mysql> unlock tables;

 

 

主从两个参数必须一致

 

 

测试:

1、主库 在数据库stu中创建一个新的表   从库跟着创建一个相同的表

2、主库 在新建的表中添加数据, 从库新建的表中也会自动添加数据

3、从库关闭  我直接将从库虚拟机关闭  ,主库添加数据,从库重启后,也会自动添加数据

以上实验我已经验证过了,中间遇到好多坑,由于过程被我clear了所以,没有把坑列出来,多百度吧。

我是按着上面的步骤试验成功的。

中间借鉴了两个文章:

https://www.cnblogs.com/imweihao/p/7301537.html

https://www.cnblogs.com/dengshihuang/p/8029092.html

对我帮助很大

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值