一、编译mysql5.6.43
两台机器 都部署mysql
1.47 master
1.48 slave
1、 安装依赖
yum -y install make gcc-c++ cmake bison-devel ncurses-devel perl vim
准备用户和组
groupadd mysql
useradd mysql -g mysql -M -s /sbin/nologin
mkdir /usr/local/mysql 安装目录
mkdir /usr/local/mysql/data 存放数据目录
2、安装mysql-5.6.43.tar.gz
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43.tar.gz
tar zxf MySQL-5.6/mysql-5.6.43.tar.gz
cd mysql-5.6.43
#开始编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
#开始安装
make;make install
#目录授权
chown mysql:mysql /usr/local/mysql
3、数据库初始化
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
4、配置
cp support-files/my-default.cnf /etc/my.cnf
#修改my.cnf配置
vim /etc/my.cnf
[mysqld] 添加:
datadir=/usr/local/mysql/data
lower_case_table_names=1
#设置环境变量
[root@localhost ~]# vi /root/.bash_profile
在修改PATH=$PATH:$HOME/bin为:
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
[root@localhost ~]# source /root/.bash_profile //使刚才的修改生效
5、启动
5.1 传统启动
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root -p(回车)
mysql> use mysql;
mysql> desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //为root添加远程连接的能力
mysql> update user set Password = password('123456') where User='root'; //设置root用户密码
5.2 服务启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
相关命令:
service mysql start
#停止mysql服务
service mysql stop
#重启mysql服务
service mysql restart
#添加到开机启动项
chkconfig --add mysql
#修改root密码(前提是mysql启动成功)
cd /usr/local/mysql
#./bin/mysqladmin -u root password
至此部署完毕
二、主从同步
1.47 master
1.48 slave
master配置
在Linux环境下MySQL的配置文件的位置是在 /etc/my.cnf ,在该文件下指定Master的配置如下:
log-bin=mysql-bin
server-id=2 唯一标识
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=ufind_db 指定需要同步的数据库
然后重启mysql:service mysqld restart
赋予从库权限帐号,允许用户在主库上读取日志,赋予10.255.1.48也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
mysql> GRANT FILE ON *.* TO 'root'@'10.255.1.48' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'10.255.1.48' IDENTIFIED BY '123456';
mysql> flush privileges;
重启mysql,登录mysql,显示主库信息
mysql> show master status;
+------------------+----------+--------------+----------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+----------------------------------+-------------------+
| mysql-bin.000001 | 602 | ufind_db | information_schema,cluster,mysql | |
+------------------+----------+--------------+----------------------------------+-------------------+
这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。
另外:如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。
slave配置
从库的配置,首先也是修改配置文件:/etc/my.cnf 如下:
log-bin=mysql-bin
server-id=3
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=ufind_db
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60