煮酒品茶:此为笔记,为以后配置方便所写。
流程如下:
煮酒品茶:图画的很烂,将就着看就行。
一、安装Mysql主从
煮酒品茶:安装就不写了
(1)主Mysql配置如下
1、配置文件配置
- vim /data/mysql/3306/my.cnf
[mysqld] 分支下增加:
- server-id = 1
- log-bin=mysql-bin
2、授权访表:
- mysql> GRANT ALL PRIVILEGES ON *.* TO 'slave1'@'192.168.100.31' IDENTIFIED
- BY 'password';
3、锁表记值刷表:
- mysql> FLUSH TABLES WITH READ LOCK;
- mysql> show master status;
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000001 | 98 | | |
- +------------------+----------+--------------+------------------+
- mysql>flush privileges;
4、重启mysql
(2)从mysql配置如下:
1、配置文件配置
- vim /data/mysql/3306/my.cnf
[mysqld] 分支下增加:
- server-id = 2
- master-host = 192.168.100.30
- master-user = slave1
- master-password = password
- #master-port = 3306
2、停止同步:
- mysql> stop slave;
- /data/mysql/3306/mysql start
3、同步记录的值:
- mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.30',
- MASTER_USER='slave1',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-
- bin.000001',MASTER_LOG_POS=98;
4、启动同步:
- mysql> start slave;
5、配置结束后测试
煮酒品茶:
1、同步配置文件设置
Replicate-do-db=test 需同步的库(多库逗号分开)
Replicate-ignore-db=mysql 不需要同步的库(一般选定)
Master系列:(主库帐号密码)
- 例:
- port=3306 端口
- log-bin=mysql-bin 启用log-bin
- server-id=2 服务id
- binlog-ignore-db=mysql 不需要同步数据库binlog
- replicate-ignore-db=mysql 不需要同步数据库
- log-slave-updates 从日志更新
- slave-skip-errors=all 跳过忽略所有错误
- sync-binlog=1
- #使每个事务的 binlog(sync_binlog =1)和(默认情况为真)InnoDB日志与硬盘同步,该选项的效果是崩溃后重启时,在滚回事务后,MySQL服务器从binlog剪切回滚的 InnoDB事务。这样可以确保binlog反馈InnoDB表的确切数据等,并使从服务器保持与主服务器保持同步(不接收 回滚的语句)。
- auto-increment-increment=2
- auto-increment-offset=2
- #是用来设定数据库中自动增长的起点的,因为这两台服务器都设定了一次同一个自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
2、查看同步状态
mysql> show slave status\G
正常:IO/SQL皆为Yes,Master值都为正确,不正确就要修改。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 常见错误
- 如果Slave_IO_Runing:No 则说明权限分配有错误,重新分配权限。
- 如果Slave_SQL_Runing:No 则可用下面方法解决:
- 解决办法一、
- Slave_SQL_Running: No
- 1.程序可能在slave上进行了写操作
- 2.也可能是slave机器重起后,事务回滚造成的.
- 一般是事务回滚造成的:
- 解决办法:
- mysql> slave stop;
- mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
- mysql> slave start;
- 解决办法二、
- 首先停掉Slave服务:slave stop
- 到主服务器上查看主机状态:
- 记录File和Position对应的值
- 进入master
- mysql> show master status;
- +----------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +----------------------+----------+--------------+------------------+
- | localhost-bin.000094 | 33622483 | | |
- +----------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
- 然后到slave服务器上执行手动同步:
- mysql> change master to
- > master_host='master_ip',
- > master_user='user',
- > master_password='pwd',
- > master_port=3306,
- > master_log_file='localhost-bin.000094',
- > master_log_pos=33622483 ;
- 1 row in set (0.00 sec)
- mysql> slave start;
手动同步需要停止master的写操作!
转载(MySQL同步常见问题解答(FAQ): QA(http://www.mysqlpub.com/thread-159-1-1.html )
备用: http://cwtea.blog.51cto.com/4500217/956962