1. 首页>
  2. 腾讯云代理

[经验分享] MySql(Master_Slaver)配置!

腾讯云 2017年04月19日 浏览490

腾讯云代理 腾讯云直播申请 游戏上云

摘要:

安装过程(主机Master/机Slaver各执行一次)


主机Master配置文件/etc/my.cnf
[root@gkx bin]# more /etc/my.cnf
[mysqld]
server_id=1                             ##主机id 不能和从机id重复
log-bin=/var/log/mysql/mysql-bin.index   ##主机日志文件
datadir=/var/lib/mysql

set-variable=replicate-do-db=tencent     
##主从复制配置时,该选项表明只复制tencent数据库,由于当前是主机,所以该选项没有意义

user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

从机Slave配置文件:/etc/my.cnf
[root@wsc mysqld]# more /etc/my.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log_slow_queries=/var/log/mysql/slow.log
long_query_time = 1
log_long_format
log-queries-not-using-indexes
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
server-id =2                     ##从机id,区别于主机id
master-host = 192.168.1.60         ##主机ip,供从机连接主机用
master-user=slave                 ##刚才为从机复制主机数据新建的账号
master-password=slave             ##密码
master-port=3306
log-slave-updates

log-bin =/var/log/mysql/mysql-bin.index   
##从机日志文件,区别于中继日志(Slave自行调用,更新主机数据时查询的日志)

log=/var/log/mysql/log.log
back_log = 50
max_connections = 100
max_connect_errors = 10
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
一定要仔细查看从机配置文件中以下所列参数:
#启用从库日志,这样可以进行链式复制
log-slave-updates

#从库是否只读,0表示可读写,1表示只读
read-only=1

#只复制某个表
replicate-do-table=tablename                
##我的这次配置就是无意中限制了只能复制某一数据库导致失败的

#只复制某些表(可用匹配符)
replicate-wild-do-table=tablename%

#只复制某个库
replicate-do-db=dbname

#只复制某些库
replicte-wild-do-db=dbname%

#不复制某个表
replicate-ignore-table=tablename

#不复制某些表
replicate-wild-ignore-table=tablename%

#不复制某个库
replicate-ignore-db=dbname


下面是具体配置过程:
Master
1.为从机(Slave)创建一个复制权限账户
mysql > GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.70' IDENTIFIED BY'slave';
Ps:replication slave 为单一的复制权限 用户名slave 密码slave
2.锁定主机数据库 导出当前锁定状态下所有数据到从机中 做好复制前的基本数据同步工作
mysql > FLUSH TABLES WITH READ LOCK;
mysql > exit
[root@%%] # mysqldump -uroot -p test > tencent.sql
自己配 mysqldump -uroot -ptencent > /app_mysql/test.sql
3.查询当前主机数据库文件和位置
mysql > show master status;
------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000041 |     1509|             |                 | 
+------------------+----------+--------------+------------------+
Ps:记录下这两个值(文件名、当前位置),一会儿配置从机连接主机时要用到。

Slave
1.创建数据库 tencent
mysql >createdatabase tencent;


   2.将主机Master生成的sql文件导入到tencent数据库中
mysql -h localhost-u root tencent </app_mysql/test.sql

3.关掉Slave,将主机日志文件和位置信息读入从机
mysql > stop slave;
mysql > change master to 
       ->master_log_file='mysql-bin.000041',
       ->master_log_pos=1509;
mysql > start slave;
mysql > show slave status \G
mysql> show slave status\G;
*************************** 1. row ***************************
            Slave_IO_State: Waiting for master to send event
               Master_Host: 192.168.1.60              ##主机ip
               Master_User:slave                     ##复制账号
               Master_Port: 3306
             Connect_Retry: 60
           Master_Log_File:mysql-bin.000041           ##主机日志文件
        Read_Master_Log_Pos:1509                      ##主机日志文件位置
            Relay_Log_File: mysqld-relay-bin.000007    ##从机中继日志文件
             Relay_Log_Pos:235                       ##中继日志文件位置
      Relay_Master_Log_File: mysql-bin.000041
           Slave_IO_Running:Yes                       ##从机IO线程 连接主机
          Slave_SQL_Running:Yes                       ##从机sql线程 处理更新的日志
           Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                Last_Errno: 0
                Last_Error: 
              Skip_Counter: 0
        Exec_Master_Log_Pos: 1509
           Relay_Log_Space: 235
           Until_Condition: None
            Until_Log_File: 
             Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File: 
         Master_SSL_CA_Path: 
           Master_SSL_Cert: 
          Master_SSL_Cipher: 
            Master_SSL_Key: 
      Seconds_Behind_Master: 0
1 row in set (0.00 sec)


接下来,解锁Master,允许主机数据库更新。
Master:
mysql > unlock tables;


最后,测试一下:在主机Master数据库中insert、delete、update若干记录,从机会将操作同步下来的。


本文来自:腾讯云论坛 bbs.qcloud.com
本文作者:昆山微信 http://kunshan.dajiake.com


腾讯云服务商邀请关注:

http://partners.qcloud.com/invitation/99377079157835da208bd0

关注服务商的链接,提供下您关注的QQ,我们这边审核下即可快速回复您的工单问题与技术支持! 感谢您的信任与支持!

auto_1452.png

腾讯云技术交流群


相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808