设为首页 收藏本站
查看: 643|回复: 0

[经验分享] Mysql搭建主从同步

[复制链接]

尚未签到

发表于 2018-10-4 14:03:05 | 显示全部楼层 |阅读模式
  一、1、实验环境:两台服务器搭建主从服务实现同步
  2、实验拓扑:
  主服务器HK63(IP:192.168.2.104)---------从服务器HK64(IP:192.168.2.105)
  3、实验思路:
  (1)、准备两台服务器
  (2)、两台服务器搭建数据库(数据库版本5.1版本)
  (3)、创建要同步的数据库(MA)
  (4)、配置主服务器主配置文件开启二进制日志,从服务器无需开启,重启服务
  (5)、主服务器授权从服务器访问权限
  (6)、从服务器指定主服务器IP地址、用户名、密码、端口号
  (7)、主从服务器均关闭selinux及iptables
  (8)、进行测试
  二、搭建环境
  1、主服务器HK63数据库相关配置
  (1)、进入服务器Hk63数据库创建需同步的数据库MA
  mysql> show databases;
  +--------------------+
  | Database |
  +--------------------+|
  information_schema |
  | mysql |
  | test |
  +--------------------+
  3 rows in set (0.10 sec)
  mysql> create database MA;Query OK, 1 row affected (0.10 sec)mysql> show databases;
  +--------------------+
  | Database |
  +--------------------+|
  information_schema |
  | MA |
  | mysql |
  | test |
  +--------------------+4 rows in set (0.00 sec)
  mysql> use MA;
  Database changed
  mysql> create table shuiguo(price int);
  Query OK, 0 rows affected (0.02 sec)
  mysql> show tables;
  +--------------+|
  Tables_in_MA
  |+--------------+|
  shuiguo
  |+--------------+
  1 row in set (0.00 sec)
  (2)、编辑服务器HK63配置文件
  [root@HK63 ~]# vim /etc/my.cnf
  添加以下粗体内容
  

[mysqld]  
datadir=/var/lib/mysql
  
socket=/var/lib/mysql/mysql.sock
  
user=mysql
  
symbolic-links=0
  
**log-bin=mysqllog  #启用二进制日志,默认存在/var/lib/mysql  下面
  
server-id=1       #本机数据库ID 标示。其中master_id必须为1到232之间的一个正整数值
  
binlog-do-db=MA   #可以被从服务器复制的库。二进制需要同步的数据库名
  
**
  
[mysqld_safe]
  
log-error=/var/log/mysqld.log
  
pid-file=/var/run/mysqld/mysqld.pid
  

  (3)、重启HK63数据库
  [root@HK63 ~]# service mysqld restart
  (4)、进入数据库授权从服务器可访问权限
  [root@HK63 ~]# mysql -uroot -p123456

  mysql> grant replication slave on . to backup@192.168.2.105>  查看主数据状态信息
  mysql> show master status;
  +-----------------+----------+--------------+------------------+
  |File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +-----------------+----------+--------------+------------------+
  |mysqllog.000001 |      258 | MA           |                   |
  +-----------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  查看二进制文件存放位置:
  [root@HK63 ~]# ls /var/lib/mysql/
  ibdata1      ib_logfile1  mysql            mysqllog.index  testib_logfile0
  MA           mysqllog.000001  mysql.sock
  2、配置从服务器数据库服务前保证相关数据库一致性:
  [root@HK63 ~]# mysqldump -u root -p123456 -A >all.sql
  [root@HK63 ~]# lsall.sql anaconda-ks.cfg install.log install.log.syslog
  [root@HK63 ~]# scp all.sql 192.168.2.105:/root/
  all.sql                                              100%  516KB 515.7KB/s   00:00
  [root@HK64 ~]#  mysql -u root -p < all.sql
  [root@HK64 ~]# mysql -uroot -p123456
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | MA                 |
  | mysql              |
  | test               |
  +--------------------+
  4 rows in set (0.00 sec)
  3、HK64从服务器相关配置
  (1)、测试连接主服务数据库是否成功
  [root@HK64 ~]# mysql -u backup -h 192.168.2.104 -p123456
  查看当前登入用户
  mysql> select user();
  +----------------------+
  | user()               |
  +----------------------+
  | backup@192.168.2.105 |
  +----------------------+
  1 row in set (0.00 sec)
  查看数据库,看不到MA,因为授权用户只运行复制读取MA权限没有查看权限
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | test               |
  +--------------------+
  2 rows in set (0.00 sec)
  (2)设置从服务器mysql配置
  [root@HK64 ~]# vim /etc/my.cnf
  添加以下标红参数
  [mysqld]
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  user=mysql
  #在配置文件中写入以下内容
  server-id=2  #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似>于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。
  master-host=192.168.2.104    #指定主服务器IP地址
  master-user=backup           #制定在主服务器上可以进行同步的用户名
  master-password=123456       #密码#####以下可以不写
  #master-port = 3306   #同步所用的端口
  #master-connect-retry=60   #断点重新连接时间
  [mysqld_safe]
  log-error=/var/log/mysqld.log
  pid-file=/var/run/mysqld/mysqld.pid
  (3)、重启数据库服务
  [root@HK64 ~]# service mysqld restart
  (4)、查看从服务器状态
  [root@HK64 ~]# mysql -uroot -p123456
  mysql> show slave status\G;
   1. row
  Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.2.104
  Master_User: backup
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysqllog.000001
  Read_Master_Log_Pos: 258
  Relay_Log_File: mysqld-relay-bin.000002
  Relay_Log_Pos: 402
  Relay_Master_Log_File: mysqllog.000001
  Slave_IO_Running: Yes 可以看到这两个Yes,说明从服务器安装成功。
  Slave_SQL_Running: Yes
  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: 258
  Relay_Log_Space: 558
  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
  Master_SSL_Verify_Server_Cert: No
  Last_IO_Errno: 0
  Last_IO_Error:
  Last_SQL_Errno: 0
  Last_SQL_Error: 1 row in set (0.00 sec)
  Slave_IO_Running :一个负责与主机的io通信
  Slave_SQL_Running:负责自己的slave mysql进程
  4、测试:
  (1)登入主服务器HK63测试插入数据
  [root@HK63 ~]# mysql -uroot -p123456
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | MA                 |
  | mysql              |
  | test               |
  +--------------------+
  4 rows in set (0.00 sec)
  mysql> use MA
  Database changed
  mysql> show tables;
  +--------------+
  | Tables_in_MA |
  +--------------+
  | shuiguo      |
  +--------------+
  1 row in set (0.00 sec)
  mysql> insert into  shuiguo values(10);
  Query OK, 1 row affected (0.00 sec)
  登入从服务器HK64查看是否同步成功
  [root@HK64 ~]# mysql -uroot -p123456
  mysql> use MA;
  Database changed
  mysql> select * from shuiguo;
  +-------+
  | price |
  +-------+
  | 10 |
  +-------+
  1 row in set (0.00 sec)
  (2)从服务器插入数据是否主服务器数据会同步,进行测试:
  mysql> insert into shuiguo values(20);
  Query OK, 1 row affected (0.00 sec)
  mysql> select * from shuiguo;
  +-------+
  | price |
  +-------+
  | 10 |
  | 20 |
  +-------+
  2 rows in set (0.00 sec)
  [root@HK63 ~]# mysql -uroot -p123456
  mysql> use MA
  Database changed
  mysql> show tables;+--------------+
  | Tables_in_MA |
  +--------------+
  | shuiguo      |
  +--------------+
  1 row in set (0.00 sec)
  mysql> select * from shuiguo ;
  +-------+
  | price |
  +-------+
  |    10 |
  +-------+
  1 row in set (0.00 sec)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-611906-1-1.html 上篇帖子: mysql全量备份与增量备份 下篇帖子: mysql单表备份和恢复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表