Mysql 主从
2015-12-24 16:56
666 查看
首先,数据库版本选择 5.6
master 主机IP 192.168.10.17 ,port=3311,server-id=1, username=repl,passowrd=123456
slave 从机IP 192.168.10.16,port=3311,server-id=2
1. 主机配置文件:
[msyql]
socket = /var/lib/mysql/mysql.sock
[mysqld]
user = mysql
port = 3311
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysql/mysql-error.log
server_id = 1
explict_defaults_for_timestamp = on
binlog_do_db = msdata,test
binlog_ignore_db = mysql
binlog_format = mixed
log_bin = /var/log/mysql/mysql-bin.log
#log_slave_updates = on
2. 从机配置文件
[mysql]
socket = /var/lib/mysql/mysql.sock
[mysqld]
user = mysql
port = 3311
read_only = on
binlog_format = mixed
log-bin = /var/log/mysql/mysql-bin.log
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
replicate_do_db = msdata,test
replicate_ignore_db = mysql
log_error = /var/log/mysql/mysql-error.log
explict_defaults_for_timestamp = on
server-id=2
实际上,这里存在一个非常大的问题,我看了许多博客都没有指出这个问题。那就是replicate-do-db,如果在主机上没有选择数据库而是直接操作,那么这种操作将不会被记录到slave上。比如在master上 "update test.t1 set id=1;"。 因此需要将replicate参数改为
replicate_wild_do_table = test.%
replicate_wild_ignore_table = mysql.%
3. 分别重启主从服务 service mysqld restart
4. 主机上授权给从机,允许从机复制文件
grant all on *.* to 'repl'@'192.168.10.16' identified by '123456';
flush privileges;
这里最好先给出登录权限,在从机上试试登录主机是否可以登录,如果不可以登录,那么主机上 mysql数据库中的user表中密码存在不匹配问题。
5. 操作
(1). 首先,确保master和slave的数据文件一致。锁定master表,只允许读操作。
(2). master:show master status\G; 查看日志,以及日志pos位置。
(3). salve:show master status\G;
(3). slave :change master to master_host='192.168.10.17',master_user='repl',master_password='123456',master_port=3311,master_log_file='mysql-bin.000001',master_log_pos=107;
(4).slave: start slave;
(5). slave: show slave status\G;
如果,Slave_IO_Running: Yes Slave_SQL_Running: Yes,那么主从的配置基本上完成了
(6). 给master的数据表unlock talbe;
6. 测试
(1). 在主机上test数据库插入数据
(2).在slave上看是否有相应的数据
master 主机IP 192.168.10.17 ,port=3311,server-id=1, username=repl,passowrd=123456
slave 从机IP 192.168.10.16,port=3311,server-id=2
1. 主机配置文件:
[msyql]
socket = /var/lib/mysql/mysql.sock
[mysqld]
user = mysql
port = 3311
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysql/mysql-error.log
server_id = 1
explict_defaults_for_timestamp = on
binlog_do_db = msdata,test
binlog_ignore_db = mysql
binlog_format = mixed
log_bin = /var/log/mysql/mysql-bin.log
#log_slave_updates = on
2. 从机配置文件
[mysql]
socket = /var/lib/mysql/mysql.sock
[mysqld]
user = mysql
port = 3311
read_only = on
binlog_format = mixed
log-bin = /var/log/mysql/mysql-bin.log
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
replicate_do_db = msdata,test
replicate_ignore_db = mysql
log_error = /var/log/mysql/mysql-error.log
explict_defaults_for_timestamp = on
server-id=2
实际上,这里存在一个非常大的问题,我看了许多博客都没有指出这个问题。那就是replicate-do-db,如果在主机上没有选择数据库而是直接操作,那么这种操作将不会被记录到slave上。比如在master上 "update test.t1 set id=1;"。 因此需要将replicate参数改为
replicate_wild_do_table = test.%
replicate_wild_ignore_table = mysql.%
3. 分别重启主从服务 service mysqld restart
4. 主机上授权给从机,允许从机复制文件
grant all on *.* to 'repl'@'192.168.10.16' identified by '123456';
flush privileges;
这里最好先给出登录权限,在从机上试试登录主机是否可以登录,如果不可以登录,那么主机上 mysql数据库中的user表中密码存在不匹配问题。
5. 操作
(1). 首先,确保master和slave的数据文件一致。锁定master表,只允许读操作。
(2). master:show master status\G; 查看日志,以及日志pos位置。
(3). salve:show master status\G;
(3). slave :change master to master_host='192.168.10.17',master_user='repl',master_password='123456',master_port=3311,master_log_file='mysql-bin.000001',master_log_pos=107;
(4).slave: start slave;
(5). slave: show slave status\G;
如果,Slave_IO_Running: Yes Slave_SQL_Running: Yes,那么主从的配置基本上完成了
(6). 给master的数据表unlock talbe;
6. 测试
(1). 在主机上test数据库插入数据
(2).在slave上看是否有相应的数据
相关文章推荐
- mysql的排障之二
- MySQL中group_concat函数
- 我的mysql学习笔记-2015-12-20
- mysql-使用规范
- mysql-学习笔记(二)mysql特性
- mysql-学习笔记(一)
- Mysql技术内幕 InnoDB存储引…
- mysql关键字
- MYSQL-ORCALE decode函数在MYSQL中的实现
- mysql主从配置
- MySQL---IFNULL()函数用法
- 远程链接mysql数据库
- mysql整理
- MySQL 数据库字符集
- MySql中Lock命令和unlock命令
- Mysql 数据备份
- mysql 按照某个字段括号里的字符串排序
- MySQL中文全文检索
- mysql 主从的配置方式
- 快速解决mysql Lost connection to MySQL server at 'reading initial communication packet及can't connect to mysql server on 'localhost'