安装环境:
centos6.5
mysql5.6.36(注意mysql在5.6之前和之后的安装方式不一样)
服务器:192.168.1.1(master)
服务器:192.168.1.2(slave)
基本环境配置
将3306端口添加到防火墙例外并重启
#firewall-cmd --zone=public --add-port=3306/tcp --permanent
#firewall-cmd
然后ping一下两台服务器,确保两者相通
安装mysql:
检查系统是否安装过mysql或其依赖,若已安装先将其全部删除
#yum list install | grep mysql
#yum -y remove mysql-server.xxx
下载mysql
#wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
安装rpm
#yum install mysql-community-release-el6-5.noarch.rpm
查看安装后的文件
#ls /etc/yum.repos.d
查看源是否可用
#yum repolist enable | grep mysql
安装mysql
#yum install mysql-community-server
启动mysql
#service mysqld start
查看mysql服务是否开机启动
#chkconfig --list | grep mysqld
设置开机启动
#chkconfig mysqld on
修改字符编码
#vi /etc/my.cnf
在[mysqld]下面添加
character-set-server=utf8
在文件末尾添加
[client]
default-character-set=utf8
重启服务
#service mysqld restart
进入mysql
#mysql -uroot -p
第一次密码为空,直接回车
修改root密码
mysql>use mysql;
mysql>update user set password=password('xxxxxx') where user='root';
刷新
mysql>flush privileges;
允许远程用户访问权限,两种方式:
①授权
mysql>grant all privileges on *.* to 'root'@'%' identified by 'pwd' with grant option;
mysql>flush privileges;
如果你想允许用户jack从ip为10.10.50.127的主机连接到mysql服务器,并使用123456作为密码
mysql>grant all privileges on *.* to 'jack'@'10.10.50.127' identified by '123456' with grant option;
mysql>flush privileges;
②改表
mysql>update user set host='%' where user='root';
mysql>flush privileges;
查询访问权限
mysql>select user,host from user;
如下图代表修改成功
+------+------------------+
| user | host |
+------+------------------+
| root | % |
| root | localhost |
+------+------------------+
查看编码
mysql>show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
如上图,代表编码utf8设置成功
master的配置
修改mysql配置文件
#vi /etc/my.cnf
将如下配置加入到[mysqld]下面
log-bin=mysql-bin
server-id=1
binlog-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
保存并退出
#:wq
重启mysql
#service mysqld restart
进入mysql,输入密码
#mysql -u root -p
赋予从库权限(如果你不想用root用户,可以自己设定)
mysql>grant file on *.* to 'root'@'192.168.1.2' identified by 'root密码';
mysql>grant replication slave on *.* to 'root'@'192.168.1.2' identified by 'root密码';
mysql>flush privileges;
重启mysql,登录mysql,显示主库信息
mysql>show master status;
这里显示的file、position在配置slave要用到,binlog-do-db表示要同步的数据库,binlog-ignore-db表示不需要同步的数据库。
如果显示为empty set(0.00 sec),那说明前面的my.cnf没配置对。
slave的配置
修改mysql配置文件
#vi /etc/my.cnf
将如下配置加入到[mysqld]下面
log-bin=mysql-bin
server-id=2
binlog-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
保存并退出
#:wq
重启mysql
#service mysqld restart
进入mysql,输入密码
#mysql -u root -p
赋予权限(如果你不想用root用户,可以自己设定)
mysql>stop slave;
mysql>change master to master_host='192.168.1.1',master_user='root',master_password='密码',master_log_file='mysql-bin.000001',master_log_pos=120;
mysql>start slave;
查看配置信息
mysql>show slave status \G;
如果看到了下面的内容代表配置成功
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
测试同步
我们先在主库test里面加一个表加几条测试数据,再刷新从库test,能看到新加的表和数据,代表主从同步配置成功。