Mysql主从数据库搭建

DevOps

2020-01-02

7

0

2020首发,为了数据的安全,为了美好的明天冲鸭~

下载rpm包:

wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

安装软件源:

rpm -Uvh mysql57-community-release-el7-10.noarch.rpm

安装mysql服务器:

yum install -y mysql-community-server

启动mysql:

service mysqld start

登陆mysql:

mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

set global validate_password_policy=0;

set global validate_password_length=1;

上面两个是密码策略修改,下面是开启远程

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;

从数据库服务器同上重复操作一遍.

 

ps:

root密码忘记之修改密码

假设我们使用的是root账户。

1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:

#vim /etc/my.cnf(注:windows下修改的是my.ini)

在文档内搜索mysqld定位到[mysqld]文本段:

/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:

重启mysql-------- systemctl restart mysqld

systemctl status mysqld

mysql -u root -p 命令然后回车

mysql> update user set password=password("*******") where user="*******"; #修改密码报错 ERROR 1054 (42S22): Unknown column 'password' in 'field list' mysql> update mysql.user set authentication_string=password('*******') where user='*******'; #修改密码成功 Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> flush privileges;

 

主从查看log日志是否开启

show variables like '%log_bin%';

 

配置Master

1.开启binlog日志

登录mysql,输入

show variables like '%log_bin%';

退出MySQL,输入vi /etc/my.cnf,编辑my.cnf文件。添加

server_id=1

log-bin=mysql

其中server_id不能和其他机器重复。保存退出。重启MySQL,指令service mysqld restart。再次查看log_bin,如下

通过上图显示/var/lib/mysql/下存放二进制文件如mysql.000001和mysql.index。其中mysql.index存放的是内容。

这样就开启了binlog,我们可以查看主节点master,指令:

show master status\G

查看file和postition的值。

我们需要创建一个用户为从节点读取日志,用户dev

指令:(这里为了省事不适用实际ip了直接%代替)

grant all privileges on *.* to user@'%' IDENTIFIED by 'password';

 

配置Slave

1.开启Relay日志

查看是否开启,show variables like '%relay%';

2.默认是没有开启的,退出MySQL输入vi /etc/my.cnf,添加

server_id=2

relay-log=mysql

重启MySQL,service mysqld restart。

这个时候我们需要验证两台机器是否能访问,

比如说在某一台机器中输入

mysql -h172.1*.1*.1** -uroot -p

连接另外一台机器。我的机器显示

 

3.开启两个线程即I/O和SQL线程

change master to master_host='172.1*.*.1**',master_port=3306,master_user='dev',master_password='password',master_log_file='mysql.000001',master_log_pos=585;

file和pos是上面master上最后一个图片中的值。

4.启动Slave

指令start slave;

查看状态 show slave status\G

红框中的都是Yes表示主从复制开启成功。

 

测试

我的机器上有2个centos,分别为1个master,1个slave,

我们再Master()这个mysql上新建一个数据库aaa,然后再刷新其他两个数据库,

如果其他两个数据库上都有aaa,则表示我们的主从复制建立成功。

 

测试成功~~~

 

 

发表评论

全部评论:0条

lmy233

努力工作学习生活的人呐~~

联系方式

神圣之子仅供学习交流
E-mail:limengyu233@163.com
github:https://github.com/lmy01