个人LINUX学习笔记(二)

Mysql replication(主从)配置

一、Mysql主从应用场景

  • 原理是master上数据更新时会记录一个bin-log,slave会实时同步该bin-log然后slave根据bin-log的sql语句进行相应的操作
  • Mysql主从可以实时备份,保证数据高安全性
  • 可以应用在读写分离的场景中,用以降低单台Mysql服务器的I/O
  • 可以实现Mysql服务的HA集群
  • 可以是1主多从,也可以是互相主从(主主)

二、配置mysql服务

  • MySQL Replication 又叫做AB复制或者主从复制。它主要用于MySQL的时时备份或者读写分离。在配置之前先做一下准备工作,配置两台mysql服务器

二、配置repication

把一个mysql作为主(master),另一个mysql作为从(slave). 为了让实验更加像生产环境,所以先在master上创建一个库db1,并且把mysql的库数据复制给它:

[[email protected] bin]# mysql -uroot -p  #登陆进入mysql

mysql> create database db1;
Query OK, 1 row affected (0.01 sec)

mysql> quit

/usr/bin/mysqldump -uroot -p mysql > /home/123.sql  #备份master的mysql库到/home/123.sql
mysql -uroot -p db1 < /home/123.sql  #将/home/123.sql恢复到master的db1库

1. 设置master

修改配置文件:

vim /etc/my.cnf

在[mysqld]部分查看是否有以下内容,如果没有则添加:

server-id=1

log-bin=mysql-bin

除了这两行是必须的外,还有两个参数,你可以选择性的使用:

binlog-do-db=databasename1,databasename2  #设置需要同步的库名

binlog-ignore-db=databasename1,databasename2  #设置忽略不同步的库名

binlog-do-db=需要复制的数据库名,多个数据库名,使用逗号分隔。binlog-ignore-db=不需要复制的数据库库名,多个数据库名,使用逗号分隔。这两个参数其实用一个就可以啦。

如果修改过配置文件需要重启mysqld服务,否则不需要重启:

killall mysqld  #停止mysql

/etc/init.d/mysqld start  #启动mysql

mysql> grant replication slave on *.* to ‘repl‘@‘slave的IP‘ identified by ‘123123‘;  #这里的repl是为slave端设置的访问master端mysql数据的用户,密码为123123,这里的127.0.0.1为slave的ip。
mysql> flush tables with read lock;  #锁定数据库,此时不允许更改任何数据
mysql> show master status;  #查看状态,这些数据是要记录的,一会要在slave端用到
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |   474952 |              |                  |
+------------------+----------+--------------+------------------+

2. 设置slave

先修改slave的配置文件my.cnf:

vim /etc/my.cnf

增加一行“server-id = 2” 总之不能让这个id和master一样,否则会报错,此项必须加在[mysqld]选项下方可生效,另外在slave上,你也可以选择性的增加如下两行,对应于master上增加的两行:

replicate-do-db=databasename1,databasename2

replicate-ignore-db=databasename1,databasename2

改完后,重启slave:

service mysqld restart

拷贝master上的db1库的数据到slave上

/usr/bin/mysqldump -uroot -p db1 > /home/db1.sql  #备份master上的db1到/home/db1.sql

用scp或者用winscp将db1.sql拷贝到slave上并恢复到slave上的db1库

把数据拷贝过来后,就需要在slave上配置主从了:

[[email protected] ~]# mysql -uroot -pyourpassword
mysql> slave stop;
mysql> change master to master_host=‘masterIP‘, master_port=3307,
master_user=‘repl‘, master_password=‘123123‘,
master_log_file=‘mysql-bin.000006‘, master_log_pos=474952;
mysql> slave start;

相信聪明的你一定可以看懂上面的各个参数分别表示什么含义,其中master_log_file和master_log_pos是在上面使用 show master status 查到的数据。执行完这一步后,需要在master上执行一步:

mysql -uroot -p123456 -e "unlock tables"  #解锁master上的表

然后查看slave的状态:

mysql> show slave status\G;

确认以下两项参数都为yes:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes



测试Mysql主从

在master上执行如下命令:

[[email protected] ~]# mysql -uroot -p -e "use db1;select count(*) from db"
+----------+
| count(*) |
+----------+
|        2 |
+----------+
[[email protected] ~]# mysql -uroot -p -e "use db1;truncate table db"
[[email protected] ~]# mysql -uroot -p -e "use db1;select count(*) from db"
+----------+
| count(*) |
+----------+
|        0 |
+----------+

这样清空了db1.db表的数据,下面查看slave上的该表数据:

[[email protected] ~]# mysql -uroot -p -e "use db1; select count(*) from db"
+----------+
| count(*) |
+----------+
|        0 |
+----------+

slave上的该表也被清空了。这样好像不太明显,不妨继续把db表删除试试:

[[email protected] ~]# mysql -uroot -p -e "use db1; drop table db"
[[email protected] ~]# mysql -uroot -p -e "use db1; select count(*) from db"
ERROR 1146 (42S02) at line 1: Table ‘db1.db‘ doesn‘t exist

这次很明显了。

主从配置起来很简单,但是这种机制也是非常脆弱的,一旦我们不小心在从上写了数据,那么主从也就被破坏了。另外如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.


时间: 2024-10-10 09:11:48

个人LINUX学习笔记(二)的相关文章

Linux学习笔记二:Linux的文件处理命令

1.文件处理命令:ls 作用:显示目录文件 语法:ls [选项] [文件或目录] [选项]:-a 显示所有文件,包括隐藏文件   -l 显示详细信息 -d 查看目录属性 [文件或目录]:当省略时默认将当前路径作为参数 实例: · ls 显示当前文件夹下所有文件(不包括隐藏文件)的信息 · ls -l 显示当前文件夹下所有文件(不包括隐藏文件)的详细信息 · ls -ld  显示当前文件夹的详细信息 技巧:要查看文件夹的信息,必须加-d参数:要查看详细参数,必须加-l参数. 2.文件的属性 使用”

linux学习笔记二:硬盘信息查询

在linux管理中,硬盘管理是很重要的一部分.包括阵列,分区,逻辑卷等操作,在对硬盘操作前,需要充分的了解硬盘的信息.常用的硬盘查询有以下几种: 1.df  查看文件系统空间使用情况: linux-lszd-db:~ # dfFilesystem     1K-blocks     Used Available Use% Mounted on/dev/sda6      809262496 37615092 770825244   5% /udev             8076412    

linux学习笔记二:linux文件系统

各大linux的版本都遵循着FHS(Filesystem Hierarchy Standard)文件系统目录标准,是一个树形结构的组织文件.在此简要记录各目录. linux下所有文件都处在/文件下. 树形结构图: /boot:  系统启动相关的文件 主要文件 1.vmliunx:内核    2.initramfs:磁盘映像文件   3.grub(bootloader) /dev:设备文件 块设备:随机访问设备. 字符设备:线性设备,顺序访问.按字符为单位.键盘.鼠标. 设备号:主设备号(majo

Linux学习笔记(二)——主机规划及磁盘分区

最近进行系统性的学习Linux系统,读了鸟哥的Linux私房菜,摘录学习笔记如下: 1)  在Linux系统中,每个装置都被当成一个档案来对待,每个装置都会有装置文件名. 2)  磁盘的装置文件名主要分为IDE接口的/dev/hd[a-d]及 SATA/SCSI/USB界面的/dev/sd[a-p]两种: 3)  整颗磁盘的第一个扇区非常重要,因为他记录了整颗磁盘的重要信息!磁盘的第一个扇区主要记录了两个重要的信息,分别是: 主要启动记录区(Master Boot Record, MBR):可以

Linux学习笔记(二)-Shell教程

1. Shell教程 1. Shell教程 Shell是一个用c语言编写的程序,是用户使用Linux的桥梁.Linux既是一种命令语言,又是一种程序设计语言. Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务.. shell脚本:Shell脚本是一种为了Shell编写的脚本程序. shell环境:Shell编程跟Java,Php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以. 来自为知笔记(Wiz)

Linux学习笔记&lt;二十一&gt;——busybox制作小系统

制作流程: kernel->initrd(busybox)->rootfs(busybox) kernel:直接利用/boot/vmlinuz-`uname -r`内核镜像或手动编译生成 initrd:编译busybox,在busybox的基础上建立initrd rootfs:同样在busybox的基础上建立rootfs 一.为小系统上的新硬盘建立分区并挂载在宿主机的相应目录,以便创建修改文件. /dev/hda1    100M    boot分区    挂载在/mnt/boot /dev/

linux学习笔记二(I/O重定向,管道)

前言:今天学习的是I/O重定向. 目的:帮助复习巩固. 内容:         1.I/O重定向就是改变输入和输出的来源和去向,>代表的是输出重定向  ,<代表的是输入重定向(这两个重定向都是会覆盖掉重定向文件的内容 ,>>表示的追加重定向,没有输入追加重定向.   2.bash有一个开关功能的set,这个可以对一些东西进行开关,自行man.如:set -C是启用禁止对已经存在的文件进行重定向,但是即使是开启这个功能,那么也是可以强制的进行加上>|.set +C就是关闭以上的

linux学习笔记二-----文件权限管理

一.分析文件权限(ln -s 文件名 快捷方式名 用来创建文件的快捷方式,下方ll查看信息时会在第一个字符处显示l) [[email protected] ~]$ ll total 4 drwxrwxr-x. 2 hjp hjp 4096 Jan 6 00:16 t drwxrwxr-x. 2 hjp hjp 6 Jan 5 20:44 testdir [[email protected] ~]$ 以drwxrwxr-x. 2 hjp hjp 4096 Jan 6 00:16 t为例1.d:表示

Linux学习笔记&lt;二十七&gt;——DNS服务器配置实例

配置规划:(vmware9下RHEL5.8系统实现) 在cqy.com域中,在192.168.0.0/24网段 ns服务器:192.168.0.150: www服务器:192.168.0.151,192.168.0.152 mail服务器:192.168.0.153 ftp服务器是www服务器的别名 配置主从服务器,从服务器IP:192.168.0.160 主服务器内授权一个子服务器,IP:192.168.0.170,并实现子服务器可以解析父域 注意:必须确保服务器防火墙不阻隔dns流量 # s

Linux学习笔记&lt;二十五&gt;——openssh服务

ssh:Secure SHell ssh特点: 基于TCP22号端口: 密文认证: 密文传输数据 openssh是ssh的开源实现,支持ssh v1和ssh v2 但ssh v1无法解决中间层攻击,建议不要使用 客户端: Linux:ssh Windows:putty,SecureCRT,SSHSecureShellClient,Xmanager 服务器端: Linux:sshd openssh相关命令 1.ssh -X:enable X11 forwarding -Y:enable trust