Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 实现mysql主从复制
Posted 淡淡人生过
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 实现mysql主从复制相关的知识,希望对你有一定的参考价值。
mysql安装方法:
http://www.cnblogs.com/lin3615/p/4376224.html
如果你想要更快的,更省事的安装mysql可以去试试宝塔,一键安装,省事快捷
安装教程:https://www.bt.cn/bbs/thread-1186-1-1.html
用到的是两台服务器
主:192.168.1.106
从:192.168.1.69
1.在主库服务器中的mysql中新建一个用户用于让从库连接使用
insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values(\'%\',\'rjj123\',password(\'123456\'),\'\',\'\',\'\');
2.#刷新系统授权表 flush privileges;
3. #授权用户rjj只能从 192.168.1.69 这个IP访问主服务器192.168.1.106上面的数据库
grant replication slave on *.* to \'rjj123\'@\'192.168.1.69\' identified by \'123456\';
rjj123:用户名称,用于从服务器登陆主服务的的账号
192.168.1.69:从服务的IP
123456:账号的密码
4.先把 主服务器的数据库复制到 从服务器,具体方法可参考:
http://www.cnblogs.com/lin3615/p/3749438.html
这一步就是在主服务和从服务中建立一样的数据库信息,数据库的一样,表结构一样
5.配置MySQL主服务器(192.168.1.106)的my.cnf文件
vim /etc/my.cnf
一下配置是我的my.cnf中全部,主要是红色部分
[mysqld]
#主机的东西
binlog-do-db=rjj
binlog-ignore-db=mysql
log-bin=mysql-bin
user = mysql
basedir = /usr/local/mysql
skip-external-locking
key_buffer = 384M
max_allowed_packet=268435456
max_connections = 500
max_user_connections = 35
wait_timeout=40
connect_timeout=10
# table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
#主机
server-id = 106
# skip-innodb
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
一般只要的是这几个参数
server-id=1 #设置服务器id,为1表示主服务器,一般用IP地址接替log-bin=mysql-bin #启动MySQ二进制日志系统
binlog-do-db=test #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql #不同步mysql系统数据库
#保存退出
service mysqld restart #重启MySQL
mysql -h localhost -u root -p #登陆
show variables like \'server_id\'; #查看server-id的值是否为1
mysql> show variables like \'server_id\';
6.show master status; #查看主服务器,出现以下类似信息
需要记住主服务器中的这个
mysql-bin.000014
和
120
注意:这里记住File的值:mysql-bin.000011和Position的值:107,重服务器配置会用到。
从服务的mysql配置
首先需要配置 /etc/my.cof
vim /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
server-id=2 #设置服务器id,修改其值为2,表示为从数据库log-bin=mysql-bin #启动MySQ二进制日志系统replicate-do-db=test #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql #不同步mysql系统数据库
read_only #设置数据库只读
service mysqld restart #重启MySQL
从服务器中mysql的基本一样,read_only #设置数据库只读,这个配置就是直接把这个从服务设置成只读的了。
现在开始配置从服务的mysql
#停止slave同步进程
stop slave;
#执行同步语句
change master to
master_host=\'192.168.1.106\' //主机的ip
,master_user=\'rjj123\' //我们在主机上授权的账号
,master_password=\'123456\' //密码
,master_log_file=\'mysql-bin.000014\' //我们在主服务器上得到的file
,master_log_pos=120; //Position
#开启slave同步进程
start slave;
注意:在没有开启start slave
执行 SHOW SLAVE STATUS\\G 命令显示的
执行start slave 后我们再次执行SHOW SLAVE STATUS\\G 命令
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个参数都是yes就可以了。
如果执行show slave status\\G;出现的是
Slave_IO_Running: Connecting
这个问题,网上找了好多
一般都是这个答案
我的不是这个问题,我把主服务器和从服务器的防火墙都关闭就可以了
关闭防火墙的方法为:
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作
补充:
a. 防火墙还需要关闭ipv6的防火墙:
chkconfig ip6tables off
并且可以通过如下命令查看状态:
chkconfig --list iptables
b. selinux状态可以通过以下命令查看:
Sestatus
===============
好了配置好了主从复制,我们来测试下看看是不是会成功呢?
主库的表的信息,这个是有数据的
从库表是没有数据的
配置同步了,但是在从库查看时候主库的数据还是不能够同步过来。
这些数据是原来的,配置好后,没有插入过数据测试,直接在从从库查询。
后来删除了主库的数据。现在主库和从库的数据一致了。我们插入一条数据测试看看
主库插入数据
现在看看从库是否有数据
好了,现在数据同步了。
以上是关于Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 实现mysql主从复制的主要内容,如果未能解决你的问题,请参考以下文章