mysql主从整套方案_Mysql主从方案

Mysql主从方案

序言

Mysql数据库可以通过源码编译安装,也可以通过RPM或yum安装,安装方法自选,但是我推荐用源码编译安装。

数据库安装

84a027f4ab44cb6cea2ef24b86a09eb8.png

mysql主从复制中:

第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

Mysql源码编译安装

1)安装cmake编译工具

yum -y install cmake -y

3)安装依赖

yum -y install  gcc gcc-c++  ncurses-devel    用于终端操作的开发包

4)添加用户

useradd -u 8001 -s /sbin/nologin mysql

5)创建数据库存放目录

mkdir /data

tar -zxvf mysql-5.6.26.tar.gz -C /usr/local/

cd  /usr/local/mysql-5.6.26

6)编译安装

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data -DMYSQL_USER=mysql

参数说明:

-DCMAKE_INSTALL_PREFIX   数据文件存放目录

-DMYSQL_UNIX_ADDR         sock文件路径

-DDEFAULT_CHARSET 默认字符集

-DDEFAULT_COLLATION默认字符校对

-DWITH_EXTRA_CHARSETS 扩展字符支持  默认all

-DWITH_storage_STORAGE_ENGINE   存储引擎的支持,默认支持MyISAM,MERGE,MEMORY,CVS存储引擎

-DENABLED_LOCAL_INFILE=1   启用加载本地数据

-DMYSQL_DATADIR数据存放目录

-DMYSQL_USERmysql运行用户

扩展:

-DWITH_PARTITION_STORAGE_ENGINE=1   支持分区表

-DINSTALL_LIBDIR=dir_name

-DSYSCONFDIR=dir_name    The default my.cnf option file directory

7)安装

make -j 4 && make install   -j 4 是指使用4个cpu核心数,如我们的双核四线程,就可以写4

8)配置mysql

chown -R mysql:mysql /usr/local/mysql/                //属主属组更改

cp /usr/local/mysql/support-files/my-default.cnf  /etc/my.cnf       //覆盖原配置文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    //启动脚本

chmod +x /etc/init.d/mysqld//赋予启动脚本执行权限

#vim /etc/init.d/ mysqld                                                   //更改启动脚本中指定mysql位置

basedir=

datadir=

#修改为

basedir=/usr/local/mysql

datadir=/data

# chkconfig mysqld  on                                         //开机启动

初始化数据库

# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data --user=mysql

#类似于在rpm安装的时候启动数据库弹出的初始化消息

ls /data/                     //初始化看这个下面有无mysql和test等数据库

c83f2857f30a9dc7b62beaad4eb6d65d.png

ln -s /usr/local/mysql/bin/* /bin/                 //这个里面是部分命令,让系统直接调用

servie mysqld  start //启动数据库

mysql_secure_installation                                   //初始安全设置(设置root密码,123456)[记住,编译安装之前,记得除去mysql mysql-devel mysql-libs三个软件]

[root@master ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): //初始化时密码为空,所以直接回车

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] y       //是否为root设置密码,选择是

New password: 输入新密码

Re-enter new password: 重复新密码

Password updated successfully!

Reloading privilege tables..

... Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y   //是否移除匿名登录,选择是

... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y    //禁用root用户远程登录,选择是

... Success!

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y  //删除测试数据库,选择是

- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y   //重新加载授权信息

... Success!

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

Cleaning up...

初始化完毕

mysql -uroot -p123456                                //测试登录(OK)

到此数据库编译安装完毕

部署MySQL主从同步

环境准备:

主机名

IP

系统/MySQL版本

角色

master

192.168.100.101

Rhel6.5/5.6.26

Master

slave

192.168.100.102

Rhel6.5/5.6.26

slave

配置主数据库服务器master

创建需要同步的数据库:

mysql> create database HA;

mysql> use HA;

mysql> create table T1(id int,name varchar(20));

service mysqld stop

配置my.cnf:

vim /etc/my.cnf

log-bin=mysql-bin-master  #启用二进制日志

server-id       = 1   #本机数据库ID标示

binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名

binlog-ignore-db=mysql  #不可以被从服务器复制的库

重启mysql:

service mysqld restart

授权:

mysql> grant replication slave on *.* to slave@192.168.100.102 identified by "123456";

查看状态信息:

mysql> show master status;

501d25f589e40409f0226be437594986.png

查看二进制日志:

ls /data/

b43d5fca2d2acdbbe3f3a7f44cc2472a.png

mysql> show binlog events\G

2da5f4627a8552ca90fbeea297acc678.png

复制前要保证同步的数据库一致

mysqldump  -uroot -p123456  HA >HA.sql

#也可以导出数据库将导出的数据库传给从服务器

scp HA.sql 192.168.100.102:/root

fd7f2fcbe5b90f2b855e4f005b35c4ab.png

配置从数据库服务器slave

两台数据库服务器mysql版本要一致

Mysql -uroot -p123456

mysql> show variables like '%version%';

c3e261068fe6ea87f750e4e43b8573a4.png

测试连接到主服务器是否成功

mysql -uslave -p123456 -h 192.168.100.101

0026d991d2bef26dc727c2dc4a7a7e3e.png

1440b29f4000ad656c159652825ff181.png

只有复制的权限

导入数据库,和主数据库服务器保持一致

mysql -uroot -p123456

mysql> create database HA;

417840fe14834a51e53b2a732d9b9ab3.png

mysql -uroot-p123456 HA

63530eafc9a22c66597cad18e7181e31.png

修改从服务器配置文件:

从服务器没必要开启bin-log日志

service mysqld stop

9604ed89b35512a06efcf95b0daa1c36.png

vim /etc/my.cnf

server-id       = 2#从服务器ID号,不要和主ID相同,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实

mysql> change master to master_host='192.168.100.101',master_user='slave',master_password='123456';

mysql> start slave;

mysql> show slave status\G  查看状态

8af57ced43d9c40e9efb0443933b6b49.png

Slave_IO_Running :一个负责与主机的io通信

Slave_SQL_Running:负责自己的slave mysql进程

再到主服务器上查看状态:

mysql> show processlist \G

2c722a1fe0df2ba8c275338394eb5329.png

插入数据测试同步:

mysql> insert into Ttestvalues(1,'tianhe');

从数据库上查看:

Mysql> select * from Ttest;

d1bc792c03f66719fd3dbc03b593e21b.png

去从服务器查看数据

288a336fb155a38e511ff75e235795c1.png

==================================================================

主从搭建完成

==================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值