一、安装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/