CentOS7+mysql5.6 Master-Slave主从数据库设置

一、安装CentOS7

主机1:10.175.201.254   master

主机2:10.175.201.253   slave

二、安装mysql,初始配置,并实现远程连接

1、安装

# yum install mysql

# yum install mysql-server

# yum install mysql-devel

Mysql-server会安装失败,因为CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。所以需要从官网下载mysql-server安装

# wgethttp://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

 

如果提示wget命令找不到,先安装wget

# yum -y install wget

 

mysql-server安装成功后,重启mysql服务

# service mysqld restart

    2、初始配置

第一次安装的mysql的root账户没有密码,可以直接进入root

# mysql -u root
 

进去后,为了数据库的安全,最好为root账户设置一个密码

mysql> set password for 'root'@'localhost'=password('password');

Query OK, 0 rows affected (0.00 sec)

 
设置密码后,不需要重启服务,下次进入mysql控制台时使用命令
# mysql -u root -p
然后输入密码即可。
 
查看默认的数据库

mysql> show databases;

 
mysql安装完成后,mariadb会被自动替换。不在生效
 

3、远程连接

Mysql默认状态下,root账户是不允许远程连接的,解决方法有两种:一是改变root账户的权限;二是重新创建一个用户。建议使用第二种。

如:创建用户luojia,密码luojia

mysql>create user 'luojia'@'%' identifiedby 'luojia';

创建好之后,便可以远程用数据库管理工具(如:Navicat)通过新建的用户连接并管理数据库

 

 

如果不想创建用户而用root连接,需要修改root用户权限

mysql> grant all privileges on *.* toroot@'%'identified by 'password';

 

如果以上步骤都进行了还是连不上数据库,可能是因为CentOS的防火墙

在服务器端吧防火墙关闭后再连接即可

 

查看防火墙状态

# systemctl list-unit-files|grepfirewalld.service

如果显示firewalld.service enabled则需要关闭

# systemctl stop firewalld.service #停止firewall服务

# systemctl disable firewalld.service #禁止firewall开机启动

关闭防火墙后如果还连不上,可能是mysql默认使用的端口3306被占用,命令

# netstat -ntlp

可以 查看端口占用情况

 

三、配置Master主数据库

1、修改配置文件

Linux环境下,mysql的配置文件位于 /etc/my.cnf

# vi /etc/my.cnf   编辑配置文件

按i 进入插入编辑模式

配置文件中加入

log-bin=mysql-bin

server-id=2

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

binlog-do-db=ufind_db

 

server-id:用于标识唯一的数据库,这里设置为2,在设置从库的时候就需要设置为其他值。

binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库

2、重启服务

# service mysqld restart

3、赋予Slave从数据库权限

# mysql -u root -p

进入mysql命令行模式

mysql> GRANT FILE ON *.* TO'luojia'@'10.175.201.253' IDENTIFIED BY 'luojia';

赋予10.175.201.253的luojia用户即Slave机器有File权限

 

mysql> GRANT REPLICATION SLAVE ON *.* TO'luojia'@'10.175.201.253' IDENTIFIED BY 'luojia';

赋予10.175.201.253的luojia用户有REPLICATION SLAVE权限

mysql> FLUSH PRIVILEGES

 

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

4、重启服务,进入mysql,查看主数据库信息

mysql> show master status;

其中file和position在配置slave的时候会用到。Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。

如果执行这个步骤最后为Empty set(0.00 sec),那说明前面的my.cnf没配置对。

四、配置Slave从数据库

修改配置文件,方法同上,加入内容为:

log-bin=mysql-bin

server-id=3

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

replicate-do-db=ufind_db

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

修改完后重启服务。

注意,在MySQL5.6及之后的版本中没有指定master_host,master_user等信息,需要用命令配置。

2、配置特殊参数

进入mysql控制台

mysql> stop slave;  #关闭Slave

mysql> change master tomaster_host='10.175.201.254',master_user='luojia',master_password='luojia',master_log_file='mysql-bin.000005',master_log_pos=120;

mysql> start slave;  #开启Slave

3、  查看Slave信息

mysql> show slavestatus;

可以看到相关参数已经配置成功。

五、测试是否设置成功

在两个配置文件中加入想要同步的数据库名,如test。

Mastermy.cnf  中加入 binlog-do-db=ufind_db

Slavemy.cnf 中加入replicate-do-db=ufind_db

重启Mysql,根据show master status的参数变化,在Slave从数据库中重新执行

mysql> stop slave;  #关闭Slave

mysql> change master tomaster_host='10.175.201.254',master_user='luojia',master_password='luojia',master_log_file='mysql-bin.000005',master_log_pos=120;

mysql> start slave;  #开启Slave

最后,通过数据库管理工具连接mysql后,在master上进行test数据库的CRUD操作,查看Slave数据库是否会同步变化。

 参考:http://blog.chinaunix.net/uid-25266990-id-3465550.html

             http://blog.csdn.net/xlgen157387/article/details/51331244/

猜你喜欢

转载自blog.csdn.net/daimadog/article/details/78628923