1) Logical Backup
2) Physical Backup
3) Hot backup
4) cold backup
crontab -e
예시
매시 10분에 실행 : 10 * * * date >> date.txt
매 2분 간격으로 실행 : /2 * * * date >> date.txt
매시 10분과 20분에 실행 : 10,20 * * date >> date.txt
매일 5시 10분과 20분에 실행 : 10,20 5 * date >> date.txt
일요일 5시 10분, 20분 실행 : 10,20 5 * 7 date >> date.txt
crontab -e
* * * * * date >> date.txt
1-1. date 시간 변경 (seoul로)
sudo timedatectl set-timezone Asia/Seoul
# time.py
import datetime
today = datetime.datetime.now()
print(str(today))
crontab -e
# python 경로를 붙여주는 것이 꼭 필요함
* * * * * ~/.pyenv/versions/3.8.5/bin/python3 time.py >> time.txt
grep CRON /var/log/syslog
# 방법 1
$ sudo apt-get install -y postfix
$ cat /var/mail/ubuntu
# 방법 2
$ sudo apt install -y mailutils
$ mail
mysqldump -u {계정} -p{비번} {db} > {backup파일이름}.sql
# 예시
mysqldump -u root -ppassword test > test.sql
# 날짜 출력
date +%Y%m%d_%H%M --date=today
# bash shell 지정
#!bin/bash
# 실행결과가 BD라는 곳에 저장됨
BD=`date +%Y%m%d_%H%M --date=today`
# 파일이름설정(날짜, 시간으로 지정)
FILE=${BD}.sql
# 이동
cd data
# 백업
mysqldump -u root -ppassword test > $FILE
/bin/bash backup.sh
* * * * * /bin/bash backup.sh
$ sudo apt install mysql-server
$ sudo mysql
---
mysql >alter user 'root'@'localhost' identified with mysql_native_password by 'password';
---
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
---
bind-address = 0.0.0.0 으로 변경
---
$ sudo mysql -u root -ppassword
---
mysql> create user 'root'@'%' identified by 'password';
mysql> grant all privileges on *.* to 'root'@'%';
---
$ sudo systemctl restart mysql
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
--
#두개 주석 제거 (전체 db 동기화)
server-id = 1
log_bin = ~~
# 특정 db만 설정하고 싶으면 binlog_do_db 요기랑 그아래 부분 설정해주기
--
sudo systemctl restart mysql
sudo systemctl status mysql
$ sudo mysql -u root -ppassword
---
#master server 상태 출력
mysql> show master status\g;
#slave가 될 ip와 연결
mysql> create user '계정이름'@'slave_ip' identified by 'password';
# slave 권한 추가
mysql> grant replication slave on *.* to '계정이름'@'slave_ip';
# 상태보기 -> 전과는 position 변경
mysql> show master status\g;
---
$sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
--
#두개 주석 제거 그리고 id 2번으로 변경
server-id = 2
log_bin = ~~
--
$sudo systemctl restart mysql
$sudo systemctl status mysql
$ sudo mysql -u root -ppassword
---
mysql> change replication source to
source_host ='master_ip',
source_log_file='master file',
source_log_pos=master position,
source_ssl=1;
# master file 과 postion은 master server에서 show master status\g; 했을때 나오는 것
# 실행시 Replica_IO_Running | Replica_SQL_Running 두 부분이 yes 가 되어있으면 완료!
# 접속 시작
start replica user='repl' password="password";
show replica status;
---
create database test;
create table user(
name varchar(20));
use test;
desc user;
=> master에서 생성했는데 slave에서 보임
=> 단, slave는 보통 read만 가능
=> 만약 서로 동기화를 시켜주고 싶으면 반대로 또 연결을 시도해주면 됨.