Application-Consistent Protection for MySQL on Kubernetes

You can add a pre-process script file or a post-process script file for MySQL on the Kubernetes access nodes.

Examples

The following example is a pre-process script for MySQL. Edit the example script to include MySQL user credentials with root ownership.

# cat /opt/commvault/Base/kscripts/cluster_name/mydatabase.myapplication.prescript #!/usr/bin/env python import pymysql.cursors import os import time import datetime dt=datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y") file1 = open("/scripts/pre-freeze.log","a+" ) try: conn = pymysql.connect (host='localhost' , user='<MYSQL USER>' , password='<USER PASSWORD>', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) with conn.cursor() as cur: cur.execute ("select version()") data = cur.fetchone() file1.write (dt) file1.write ("-------------------------------------------\n") file1.write ("-------------------------------------------\n") file1.write ("\t MySQL version is %s: "%data) file1.write ("-------------------------------------------\n") file1.write ("-------------------------------------------\n") except: file1.write (dt) file1.write("\t unable to connect to MySQL server\n") try: cur = conn.cursor() cur.execute (" flush tables with read lock ") file1.write (dt) file1.write ("\t using quiesce.py script - quiesce of database successful \n") except: file1.write(dt) file1.write( "\n unexpected error from MySQL, unable to do flush tables with read lock, Please check MySQL error logs for more info\n") finally: cur.close() conn.close() file1.close()

The following example is a post-process script for MySQL. Edit the example script to include MySQL user credentials with root ownership.

# cat /opt/commvault/Base/kscripts/mydatabase.myapplication.postscript
#!/usr/bin/env python
import pymysql.cursors
import os
import time
import datetime
dt=datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")
file1 = open("/scripts/post-thaw.log","a+" )
try:
  conn = pymysql.connect (host='localhost' , user='<MYSQL USER>' , password='<USER PASSWORD>',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor )
  cur = conn.cursor()
  cur.execute ("select version()")
  data = cur.fetchone()
  file1.write (dt)
  file1.write ("-------------------------------------------\n")
  file1.write ("-------------------------------------------\n")
  file1.write ("\t MySQL version is %s: "%data)
  file1.write ("-------------------------------------------\n")
  file1.write ("-------------------------------------------\n")
except:
  file1.write (dt)
  file1.write("\t unable to connect to MySQL server\n")
try:
  file1.write (dt)
  file1.write ("\t executing query to unquiesce the database \n")
  cur.execute ("unlock tables")
  file1.write (dt)
  file1.write ("\t Database is in unquiesce mode now \n")
except:
  file1.write(dt)
  file1.write( "\n unexpected error from MySQL, unable to unlock tables. Please check MySql error logs for more info \n")
finally:
  cur.close()
  conn.close()
file1.close()

Loading...